Openstack Ceilometer HBase storage backend
Note
This driver is designed to enable Ceilometer store its data in HBase. The implementation is using HBase Thrift interface so it’s necessary to have the HBase Thrift server installed and started: (https://ccp.cloudera.com/display/CDHDOC/HBase+Installation)
This driver has been tested against HBase 0.92.1/CDH 4.1.1, HBase 0.94.4/HDP 1.2 and HBase 0.94.5/Apache. Versions earlier than 0.92.1 are not supported due to feature incompatibility.
Due to limitations of HBase the driver implements its own data aggregations which may harm its performance. It is likely that the performance could be improved if co-processors were used, however at the moment the co-processor support is not exposed through Thrift API.
The driver is using HappyBase which is a wrapper library used to interact with HBase via Thrift protocol: http://happybase.readthedocs.org/en/latest/index.html#
Bases: ceilometer.storage.base.Connection
HBase connection.
Return the min and max timestamps from samples, using the event_filter to limit the samples seen.
( datetime.datetime(), datetime.datetime() )
Return a dictionary containing meter statistics. described by the query parameters.
The filter must have a meter value set.
Due to HBase limitations the aggregations are implemented in the driver itself, therefore this method will be quite slow because of all the Thrift traffic it is going to create.
Return an iterable of dictionaries containing meter information.
Parameters: |
|
---|
Return an iterable of project id strings.
Parameters: | source – Optional source filter. |
---|
Return an iterable of dictionaries containing resource information.
Parameters: |
|
---|
Return an iterable of samples as created by ceilometer.meter.meter_message_from_counter().
Return an iterable of user id strings.
Parameters: | source – Optional source filter. |
---|
Return the maximum of the volume field for the samples described by the query parameters.
Return the sum of the volume field for the samples described by the query parameters.
Bases: ceilometer.storage.base.StorageEngine
Put the data into a HBase database
Collections:
user - { _id: user id
source: [ array of source ids reporting for the user ] }
project - { _id: project id
source: [ array of source ids reporting for the project ] }
meter - the raw incoming data
resource - the metadata for resources - { _id: uuid of resource,
metadata: metadata dictionaries timestamp: datetime of last update user_id: uuid project_id: uuid meter: [ array of {counter_name: string, counter_type: string} ]
}