[openstack-dev] [Ironic][Ceilometer]bp:send-data-to-ceilometer

Haomeng, Wang wanghaomeng at gmail.com
Wed Jan 29 00:27:10 UTC 2014


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



More information about the OpenStack-dev mailing list