<div dir="ltr"><div>Hi all,</div><div><br></div><div>thanks a lot for your answers.</div><div>We know that ceilometer is not able to receive notifications from openstack components (like nova), when installed with XCP. But both our goal and testing approach are different. The strange behaviour we are talking about concerns ceilometer-collector and it's usage of kombu for AMQP. We added debugging output in ceilometer.openstack.common.rpc.impl_kombu.ConsumerBase.consume._callback to see whether or not some of the 58 topic consumers would receive anything on their exchange and topic. For that purpose we wrote a small test programm to publish a simple message on a configured exchange and topic to see a reaction from ceilometer-collector, but we received nothing. The rabbitmq server itself is working fine, as we can consume our sent message with another small test programm. We think this might be a configuration issue, but we've been through our setup several times and can't find the issue.</div>
<div><br></div><div>here are the source codes of the our test programs (publisher and consumer).</div><div><br></div><div>---publisher----</div><div><div>import pika</div><div>import logging</div><div><br></div><div><br></div>
<div>AMQP_HOST="ip"</div><div>AMQP_USERNAME="username"</div><div>AMQP_PASSWORD="passwd"</div><div><br></div><div>AMQP_EXCHANGE="openstack"</div><div>AMQP_ROUTING="notifications"</div>
<div><br></div><div><br></div><div>class AMQPSender(object):</div><div>    """docstring for AMQPSender"""</div><div>    def __init__(self):</div><div>        super(AMQPSender, self).__init__()</div>
<div>        self.connection = pika.BlockingConnection(pika.ConnectionParameters(</div><div>                                                  host=AMQP_HOST, credentials=pika.PlainCredentials(</div><div>                                                                                        username=AMQP_USERNAME,</div>
<div>                                                                                        password=AMQP_PASSWORD)))</div><div>        self.channel = self.connection.channel()</div><div>        self.channel.exchange_declare(exchange=AMQP_EXCHANGE, type='topic')</div>
<div><br></div><div>    def send(self, msg):</div><div>        self.channel.basic_publish(exchange=AMQP_EXCHANGE,</div><div>                                   routing_key=AMQP_ROUTING,</div><div>                                   body=msg)</div>
<div><br></div><div>    def close(self):</div><div>        self.connection.close()</div><div><br></div><div>logging.basicConfig()</div><div>a = AMQPSender()</div><div><br></div><div>a.send("Hallo Welt")</div><div>
<br></div><div>a.close()</div></div><div><br></div><div>---------consumer-------------------</div><div><div>import pika</div><div>import logging</div><div><br></div><div><br></div><div>AMQP_HOST="ip"</div><div>AMQP_USERNAME="username"</div>
<div>AMQP_PASSWORD="passwd"</div><div><br></div><div>AMQP_EXCHANGE="nova"</div><div>AMQP_ROUTING="<a href="http://notifications.info">notifications.info</a>"</div><div><br></div><div><br></div>
<div>class AMQPSender(object):</div><div>    """docstring for AMQPSender"""</div><div>    def __init__(self):</div><div>        super(AMQPSender, self).__init__()</div><div>        self.connection = pika.BlockingConnection(pika.ConnectionParameters(</div>
<div>                                                  host=AMQP_HOST, credentials=pika.PlainCredentials(</div><div>                                                                                        username=AMQP_USERNAME,</div>
<div>                                                                                        password=AMQP_PASSWORD)))</div><div>        self.channel = self.connection.channel()</div><div>        self.channel.exchange_declare(exchange=AMQP_EXCHANGE, type='topic')</div>
<div>        result = self.channel.queue_declare(exclusive=True)</div><div>        self.queue_name = result.method.queue</div><div>        self.channel.queue_bind(exchange=AMQP_EXCHANGE,</div><div>                           queue=self.queue_name,</div>
<div>                           routing_key=AMQP_ROUTING)</div><div><br></div><div><br></div><div><br></div><div>    def recv(self):</div><div>        def callback(ch, method, properties, body):</div><div>            print " [x] %r:%r" % (method.routing_key, body,)</div>
<div>        self.channel.basic_consume(callback,</div><div>                                   queue=self.queue_name,</div><div>                                   no_ack=True)</div><div>        self.channel.start_consuming()</div>
<div><br></div><div>    def close(self):</div><div>        self.connection.close()</div><div><br></div><div>logging.basicConfig()</div><div>a = AMQPSender()</div><div><br></div><div>a.recv()</div><div><br></div><div>a.close()</div>
</div><div>----------------</div><div><br></div><div>Thank you</div><div><br></div><div>Best regards,</div><div>Afef</div><div><br></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/11/2 Bob Ball <span dir="ltr"><<a href="mailto:bob.ball@citrix.com" target="_blank">bob.ball@citrix.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">



<div>
<pre style="font-size:10pt;font-family:Tahoma;word-wrap:break-word">Hi,

Ceilometer is currently KVM specific.

I hope this will get fixed during the icehouse cycle, however ceilometer and XenServer/XCP do not work together quite yet.

Bob

Martinx - ジェームズ <<a href="mailto:thiagocmartinsc@gmail.com" target="_blank">thiagocmartinsc@gmail.com</a>> wrote:

</pre><div><div class="h5">
<div>
<div dir="ltr">Hi!
<div><br>
</div>
<div>I followed this document: <a href="http://docs.openstack.org/havana/install-guide/install/apt/content/ch_ceilometer.html" target="_blank">http://docs.openstack.org/havana/install-guide/install/apt/content/ch_ceilometer.html</a></div>

<div><br>
</div>
<div>My Ceilometer does not receives any data... Still "0 bytes" showing at the Admin Panel (/admin/metering)...</div>
<div><br>
</div>
<div>I installed Ceilometer endpoint / mongodb / packages in a dedicated Virtual Machine, not at the crowd controller, keystone users / info created okay but, it doesn't seems to be working as expected.</div>
<div><br>
</div>
<div>Also, I noted that nothing is changed at the "nova.conf" of the controller itself, only nova.conf from compute node gets updated for Ceilometer AND, the Network Node also haven't changed.</div>
<div><br>
</div>
<div>Let us know if it is working for you...</div>
<div><br>
</div>
<div>Best,</div>
<div>Thiago</div>
</div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">On 1 November 2013 13:01, Afef MDHAFFAR <span dir="ltr">
<<a href="mailto:afef.mdhaffar@gmail.com" target="_blank">afef.mdhaffar@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div dir="ltr">
<div>Hi all,</div>
<div><br>
</div>
<div>We have launched devstack to install openstack, while including ceilometer. </div>
<div>We use XCP as hypervisor, Ubuntu 12.04. The used openstack version is 2014.1.</div>
<div><br>
</div>
<div>When running ceilometer-collector, consumers get registered on every topic and exchange, but never actually consume anything. We tested this with different amqp libraries, while sending messages to those topics and exchanges. Not even ceilometer.openstack.common.rpc.impl_kombu.BasicConsumer._callback
 gets called.</div>
<div><br>
</div>
<div>As we are interested in notifications from our own source, has anyone experienced this behaviour or a working system with notifications?</div>
<div><br>
</div>
<div>Thank you</div>
<div><br>
</div>
<div>Best regards,</div>
<div>Afef  </div>
<div><br>
</div>
<div>Here are our configuration files:</div>
<div><br>
</div>
<div>---------------</div>
<div>ceilometer-collector.conf:  </div>
<div>
<div>[DEFAULT]</div>
<div>verbose=True</div>
<div>auth_strategy=keystone</div>
<div>allow_resize_to_same_host=True</div>
<div>api_paste_config=/etc/nova/api-paste.ini</div>
<div>rootwrap_config=/etc/nova/rootwrap.conf</div>
<div>compute_scheduler_driver=nova.scheduler.filter_scheduler.FilterScheduler</div>
<div>dhcpbridge_flagfile=/etc/nova/nova.conf</div>
<div>force_dhcp_release=True</div>
<div>fixed_range=<a href="http://10.0.0.0/24" target="_blank">10.0.0.0/24</a></div>
<div>s3_host=ip</div>
<div>s3_port=3333</div>
<div>osapi_compute_extension=nova.api.openstack.compute.contrib.standard_extensions</div>
<div>my_ip=ip</div>
<div>sql_connection=mysql://user:passwd@localhost/nova?charset=utf8</div>
<div>libvirt_type=qemu</div>
<div>libvirt_cpu_mode=none</div>
<div>instance_name_template=instance-%08x</div>
<div>enabled_apis=ec2,osapi_compute,metadata</div>
<div>volume_api_class=nova.volume.cinder.API</div>
<div>state_path=/opt/stack/data/nova</div>
<div>lock_path=/opt/stack/data/nova</div>
<div>instances_path=/opt/stack/data/nova/instances</div>
<div>multi_host=True</div>
<div>send_arp_for_ha=True</div>
<div>logging_debug_format_suffix=^[[00;33mfrom (pid=%(process)d) %(funcName)s %(pathname)s:%(lineno)d^[[00m</div>
<div>logging_exception_prefix=%(color)s%(asctime)s TRACE %(name)s ^[[01;35m%(instance)s^[[00m</div>
<div>instance_usage_audit=True</div>
<div>instance_usage_audit_period=hour</div>
<div>notification_driver=nova.openstack.common.notifier.rpc_notifier</div>
<div>notification_driver=ceilometer.compute.nova_notifier</div>
<div>notify_on_state_change=vm_and_task_state</div>
<div>notify_api_faults=true</div>
<div>network_manager=nova.network.manager.FlatDHCPManager</div>
<div>public_interface=eth3</div>
<div>vlan_interface=eth1</div>
<div>flat_network_bridge=xapi0</div>
<div>flat_interface=eth1</div>
<div>novncproxy_base_url=<a href="http://ip:6080/vnc_auto.html" target="_blank">http://ip:6080/vnc_auto.html</a></div>
<div>xvpvncproxy_base_url=<a href="http://ip:6081/console" target="_blank">http://ip:6081/console</a></div>
<div>vncserver_listen=127.0.0.1</div>
<div>vncserver_proxyclient_address=169.254.0.1</div>
<div>ec2_dmz_host=ip</div>
<div>rabbit_host=localhost</div>
<div>rabbit_password=passwd</div>
<div>glance_api_servers=ip:9292</div>
<div>compute_driver=xenapi.XenAPIDriver</div>
<div>xenapi_connection_url=<a href="http://ip1" target="_blank">http://ip1</a></div>
<div>xenapi_connection_username=user</div>
<div>xenapi_connection_password=passwd</div>
<div>flat_injected=False</div>
<div>firewall_driver=nova.virt.firewall.IptablesFirewallDriver</div>
<div>sr_matching_filter=default-sr:true</div>
</div>
<div><br>
</div>
<div>-------------------</div>
<div>ceilometer.conf</div>
<div>
<div>[DEFAULT]</div>
<div>policy_file = /etc/ceilometer/policy.json</div>
<div><br>
</div>
<div>mysql_engine=InnoDB</div>
<div>sqlite_db=ceilometer.sqlite</div>
<div>#connection=sqlite:////ceilometer/openstack/common/db/$sqlite_db</div>
<div><br>
</div>
<div>backend=sqlalchemy</div>
<div><br>
</div>
<div>connection=sqlite:////opt/stack/ceilometer/ceilometer/openstack/common/db/ceilometer.sqlite</div>
<div><br>
</div>
<div>http_control_exchanges=nova</div>
<div>http_control_exchanges=glance</div>
<div>#http_control_exchanges=neutron</div>
<div>#http_control_exchanges=cinder</div>
<div><br>
</div>
<div>pipeline_cfg_file=pipeline.yaml</div>
<div><br>
</div>
<div>sample_source=openstack</div>
<div><br>
</div>
<div>nova_control_exchange=nova</div>
<div>glance_control_exchange=glance</div>
<div><br>
</div>
<div>verbose=true</div>
<div><br>
</div>
<div>publish_errors=true</div>
<div><br>
</div>
<div>notification_driver=ceilometer.openstack.common.notifier.rpc_notifier2</div>
<div>default_notification_level=INFO</div>
<div><br>
</div>
<div>policy_file=policy.json</div>
<div>policy_default_rule=default</div>
<div><br>
</div>
<div>rabbit_password = passwd</div>
<div>rabbit_host = localhost</div>
<div>verbose = True</div>
<div>notification_topics = notifications,glance_notifications</div>
<div>rpc_backend = ceilometer.openstack.common.rpc.impl_kombu</div>
<div>auth_strategy=keystone</div>
<div>control_exchange=openstack</div>
<div><br>
</div>
<div>[publisher_rpc]</div>
<div>metering_topic=metering</div>
<div><br>
</div>
<div>[keystone_authtoken]</div>
<div>admin_tenant_name = demo</div>
<div>admin_password = passwd</div>
<div>admin_user = admin</div>
<div>auth_protocol = http</div>
<div><br>
</div>
<div>rabbit_ha_queues=false</div>
<div><br>
</div>
<div>[service_credentials]</div>
<div># Username to use for openstack service access (string value)</div>
<div>os_username=admin</div>
<div><br>
</div>
<div># Password to use for openstack service access (string value)</div>
<div>os_password=passwd</div>
<div><br>
</div>
<div># Tenant ID to use for openstack service access (string value)</div>
<div>os_tenant_id=</div>
<div><br>
</div>
<div># Tenant name to use for openstack service access (string</div>
<div># value)</div>
<div>os_tenant_name=demo</div>
<div><br>
</div>
<div># Certificate chain for SSL validation (string value)</div>
<div>#os_cacert=<None></div>
<div><br>
</div>
<div># Auth URL to use for openstack service access (string value)</div>
<div>os_auth_url=<a href="http://ip:5000/v2.0" target="_blank">http://ip:5000/v2.0</a></div>
<div><br>
</div>
<div># Region name to use for openstack service endpoints (string</div>
<div># value)</div>
<div>os_region_name=RegionOne</div>
<div><br>
</div>
<div>[collector]</div>
<div>store_events=true</div>
<div>dispatcher=database</div>
<div><br>
</div>
<div>[rpc_notifier2]</div>
<div>topics=notifications</div>
</div>
<div><br>
</div>
</div>
<br>
_______________________________________________<br>
Mailing list: <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack" target="_blank">
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack</a><br>
Post to     : <a href="mailto:openstack@lists.openstack.org" target="_blank">openstack@lists.openstack.org</a><br>
Unsubscribe : <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack" target="_blank">
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack</a><br>
<br>
</blockquote>
</div>
<br>
</div>
</div>
</div></div></div>

</blockquote></div><br><br clear="all"><div><br></div><br><br><br>
</div></div>