...
Code Block | ||||
---|---|---|---|---|
| ||||
{ "$schema": "http://json-schema.org/draft-04/schema#", "title": "collectd Base Schema", "description": "A schema that defines the collectd meters and events", "definitions": { "collectd_field": { "description": "collectd_fields", "type": "object", "properties": { "anyOf" : { "Interval" : { "description": "interval at which to expect a new value", "type": "number" }, }, "host" : { "description": "used to identify the host", "type": "string" }, }, "message" : { "description": "The notification message", "type": "string" }, "metadata" : { "description": "an opaque data structure that enables the passing of additional information about a value list", " "type": "string" }, "plugin }, "metadata" : { "description": "used to identify the plugin", "type": "string" }, "plugin instance" : { "description": "usedan opaque todata groupstructure athat setenables ofthe values together", passing of additional information about a value list", "type": "string" }, "severity" : { "description": "can be one of OKAY, WARNING, and FAILURE", "type": "string" }, "time }, "plugin" : { "description": "Time stamp at which the value was collected", "type": "number" }, "type" : { "description": "unit used to measureidentify athe valueplugin", "type": "string" }, "type instance " : { "description": "used to distinguish between values that have an identical type", "type": "string" }, "values" : { "type": "object", "anyOf" : { "absolute" : { "type" : "number" } , "counter }, "plugin instance" : { "type" : "number" }, "derive" : { "type" : "number" }, "gauge" : { "type" : "number" } } }, "value length" : { "description": "The number of values in the data set", "description": "used to group a set of values together", "type": "number" } } } }, "mappings": { "description": "mapping pair", "type": "object", "properties": { string" }, "oneOfseverity" : { "$ref": "#/definitions/collectd_field", "collectd_string": { "description": "can be one of OKAY, WARNING, and FAILURE", "type": "string" } }, "new_string": { "type": "string" } } }, "timestamps": { "description": "Mappings from collectd timestamps to other framework timestamps", }, "typetime" : "object",{ "properties": { "mappings": { "description": "arrayTime ofstamp mappingsat fromwhich collectdthe tovalue otherwas frameworkscollected", "type": "arraynumber", "items": { "$ref": "#/definitions/mapping", "conversion": "string" } } }, "required": [ "mappings" ] }, "units": { "descriptiontype" : "Mappings from collectd units to other framework units", { "typedescription": "objectunit used to measure a value", "properties": { "mappings": { "description": "array of mappings from collectd to other frameworks", "type""type": "array", "items": { "$ref": "#/definitions/mapping", "unit_conversion": "string" } } }, "required": [ "mappings" ] string" }, "type instance " : { } }, "field_mappings": { "description": "array of field_mappings", used to distinguish between values that have an identical type", "type": "arraystring", "items": { "$ref": "#/definitions/mappings", "$ref1": "#/definitions/timestamps", "$ref2": "#/definitions/units" } } } |
Taking the following ceilometer meter as an example:
Code Block |
---|
- name: 'vcpus' event_type: 'compute.instance.*' type: 'gauge' }, unit: 'vcpu' "values" volume: $.payload.vcpus { user_id: $.payload.user_id project_id: $.payload.tenant_id "type": "object", resource_id: $.payload.instance_id "anyOf" : { "absolute" : { "type" : "string" } , "counter" : { "type" : "string" }, "derive" : { "type" : "string" }, "gauge" : { "type" : "string" }, "actual_values" : { "type" : "string" } } }, "value length" : { "description": "The number of values in the data set", "type": "number" } } } }, "mappings": { "description": "mapping pair", "type": "object", "properties": { "oneOf": { "$ref": "#/definitions/collectd_field", "collectd_string": { "type": "string" } }, "new_string": { "type": "string" }, "new_value": { "type": "string" } } }, "mappings_with_conversion": { "description": "Mappings from collectd timestamps to other framework timestamps", "type": "object", "properties": { "transform": { "description": "array of mappings from collectd to other frameworks", "type": "array", "items": { "$ref": "#/definitions/mapping", "conversion": "string" } } }, "required": [ "mappings" ] } }, "field_mappings": { "description": "array of field_mappings", "type": "array", "items": { "set": { "description": "set of associated of field_mappings", "type": "array", "anyOf":{ "$ref": "#/definitions/mappings", "$ref1": "#/definitions/mappings_with_conversion" } } } } } |
Taking the following ceilometer meter as an example:
Code Block |
---|
- name: 'compute.node.cpu.percent'
event_type: 'compute.metrics.update'
type: 'gauge'
unit: 'percent'
volume: $.payload.metrics[?(@.name='cpu.percent')].value * 100
resource_id: $.payload.host + "_" + $.payload.nodename
timestamp: $.payload.metrics[?(@.name='cpu.percent')].timestamp
metadata:
event_type: $.event_type
host: $.publisher_id
source: $.payload.metrics[?(@.name='cpu.percent')].source
|
Using the schema above:
Code Block | ||
---|---|---|
| ||
{
"field_mappings": [
"set": [
{
"new_string": "counter_name",
"collectd_field": {
"plugin": "cpu"
},
"conversion": "cpu"
},
{
"new_string": "counter_type",
"collectd_field": {
"values": {
"gauge": "cumulative"
}
}
},
{
"new_string": "counter_volume",
"collectd_field": {
"values": {
"actual_values": "values_array"
}
}
"conversion": "None"
},
{
"new_string": "timestamp",
"collectd_string": "timestamp"
},
{
"new_string": "source",
"new_value": "collectd"
},
{
"new_string": "resource_id",
"collectd_field": {
"values": {
"host": "uuid",
"plugin instance": "plugin_instance"
}
}
}
]
]
} |
Key_words: values_array.
References
http://docs.openstack.org/admin-guide/telemetry-data-collection.html
...