Hi, I am working on this ironic bp - https://blueprints.launchpad.net/ironic/+spec/send-data-to-ceilometer, worked out solutions as below, can you help to review, welcome your comments:
We will call ipmi command/api to get sensor data(sensor name, sensor current value, min/max value, status etc) and try to sent to ceilometer collector via notification bus(call rpc_notifier.notify() api to send the ipmi data message) with ironic periodic task, I have two proposed ironic-ceilometer integration solutions about the data to be sent to ceilometer: Solution 1 - sent the ipmi data to ceilometer by ipmi sensor category in specific, the meter names vary clear for ceilometer, that is pre-defined already: Common field: timestamp publisher_id message_id resource-id #the ironic node-uuid Category: FanSpeed Voltage Temperature Meter Names: fanspeed, fanspeed.min, fanspeed.max, fanspeed.status voltage, voltage.min, voltage.max, voltage.status temperature, temperature.min, temperature.max, temperature.status An message example with one ipmi node sensor data: message = { 'event_type': 'ipmidata', 'timestamp': '2013-12-1706: 12: 11.554607', 'user_id': 'admin', 'publisher_id': 'ipmidata-os26-control01.localdomain', 'message_id:' '3eca2746-9d81-42cd-b0b3-4bdec52e109x', 'tenant_id: 'c1921aa2216846919269a17978408476', 'instance_uuid: '96e11f69-f12a-485e-abfa-526cd04169c4' # nova instance uuid 'id': '1329998e8183419794507cd6f0cc121a' # node's uuid 'payload': { 'fanspeed': { 'FAN 1': { 'current_value': '4652', 'min_value': '4200', 'max_value': '4693', 'status': 'ok' } 'FAN 2': { 'current_value': '4322', 'min_value': '4210', 'max_value': '4593', 'status': 'ok' }, 'voltage': { 'Vcore': { 'current_value': '0.81', 'min_value': '0.80', 'max_value': '0.85', 'status': 'ok' }, '3.3VCC': { 'current_value': '3.36', 'min_value': '3.20', 'max_value': '3.56', 'status': 'ok' }, ... } } Solution 2- sent the ipmi data to ceilometer on the common sensor meter level, we have one 'sensor' as common meter, so all the sensor data will have more detail level to define the sensor name and attributes - current/min/max/status values: Common field: timestamp publisher_id message_id Common sensor meter name: sensor An message example with one ipmi node sensor data: message = { 'event_type': 'ipmidata', 'timestamp': '2013-12-1706: 12: 11.554607', 'user_id': 'admin', 'publisher_id': 'ipmidata-os26-control01.localdomain', 'message_id:' '3eca2746-9d81-42cd-b0b3-4bdec52e109x', 'tenant_id: 'c1921aa2216846919269a17978408476', 'instance_uuid: '96e11f69-f12a-485e-abfa-526cd04169c4' # nova instance uuid 'id': '1329998e8183419794507cd6f0cc121a' # node's uuid 'payload': { 'FAN 1': { 'current_value': '4652', 'min_value': '4200', 'max_value': '4693', 'status': 'ok' } 'FAN 2': { 'current_value': '4322', 'min_value': '4210', 'max_value': '4593', 'status': 'ok' }, 'Vcore': { 'current_value': '0.81', 'min_value': '0.80', 'max_value': '0.85', 'status': 'ok' }, '3.3VCC': { 'current_value': '3.36', 'min_value': '3.20', 'max_value': '3.56', 'status': 'ok' }, ... } } And we have existing patch in ceilometer 'Add ipmi inspector' - https://review.openstack.org/#/c/51828, it is Abandoned, but I think we should have same patch/bp in ceilometer to handle the ipmi data message sent out from ironic. Once the solution is confirmed and finalized, I will work with ceilometer team to do the testing to verify if our solution working or not. Thanks Haomeng _______________________________________________ OpenStack-dev mailing list OpenStack-dev@lists.openstack.org http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev