...
collectd simple mapping schema:
Code Block | ||||
---|---|---|---|---|
| ||||
{ "$schema": "http://json-schema.org/draft-04/schema#", "title": "Collectd Mapping", "description": "A mapping from collectd meters and events to *other* meters and events", "type": "object", "properties": { "resource_id": { "description": "Mappings from collectd resource_id to other framework resource_id", "type": "object", "items": { "type": "array", "items": { "collectd_resource_id": "string", "new_resource_id": "string" } } }, "meters": { "description": "Mappings from collectd meters to other framework meters", "type": "object", "items": { "type": "array", "items": { "collectd_meter": "string", "new_meter": "string", "new_meter_unit": "string" } } }, "events": { "description": "Mappings from collectd events to other framework events", "type": "object", "items": { "type": "array", "items": { "collectd_event": "string", "new_event": "string", "collectd_severity": "string", "new_severity": "string" } } } } } |
...
collectd to ceilometer mapping example
I think 2 things are required. The message format schema for the end point and the mapping schema.
- Former user (Deleted) will examine 1 combined schema for next week
...
Ceilometer old samples schema
Code Block | ||
---|---|---|
| ||
{
"counter_name": "instance",
"counter_type": "gauge",
"counter_unit": "instance",
"counter_volume": 1.0,
"message_id": "5460acce-4fd6-480d-ab18-9735ec7b1996",
"project_id": "35b17138-b364-4e6a-a131-8f3099c5be68",
"recorded_at": "2015-01-01T12:00:00",
"resource_id": "bd9431c1-8d69-4ad3-803a-8d4a6b89fd36",
"resource_metadata": {
"name1": "value1",
"name2": "value2"
},
"source": "openstack",
"timestamp": "2015-01-01T12:00:00",
"user_id": "efd87807-12d2-4b38-9c70-5f5c2ac427ff"
} |
Currently data normalization or mappings are managed manually in the ceilometer write plugin:
A snippet from https://github.com/openstack/collectd-ceilometer-plugin/blob/master/collectd_ceilometer/units.py:
Code Block | ||||
---|---|---|---|---|
| ||||
# Unit mappings in alphabetical order
UNITS = {
'apache.apache_idle_workers': 'Workers',
'apache.apache_bytes': 'B/s',
'apache.apache_requests': 'Req/s',
'apache.apache_scoreboard': 'Slots',
'apache.apache_connections': 'Connections',
'apcups.timeleft': 's',
'apcups.temperature': '°C',
'apcups.percent': 'Load',
'apcups.charge': 'Ah',
'apcups.frequency': 'Hz',
'apcups.voltage': 'V',
... |
and the meter code itself can be found here: https://github.com/openstack/collectd-ceilometer-plugin/blob/master/collectd_ceilometer/meters/base.py fields are mapped as follows:
ceilometer meter field | collectd field |
---|---|
counter_name | plugin, type |
counter_type | "gauge"-> "gauge", "derive"-> "delta "absolute"-> "cumulative" "counter"-> "cumulative" |
counter_unit | unit |
counter_volume | value |
message_id | - |
project_id | - |
recorded_at | - |
resource_id | hostname, plugin_instance, type_instance |
resource_metadata | meta |
source | collectd |
timestamp | time |
user_id | - |
using the new schema