...
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" : { "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": "used to group a set of values together", an opaque data structure that enables the 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": "Timeused stampto at whichidentify the value was collected", "type": "number" }, "type" : { "description": "unit used to measure a value", "plugin", "type": "string" }, "type instance }, "plugin instance" : { "description": "used to distinguishgroup betweena valuesset thatof have an identical type", values together", "type": "string" }, "values" : { "type": "object", "anyOf" : { "absolute" : { "type" : "number" } , "counter }, "severity" : { "type" : "number" }, "derive" : { "type" : "number" }, "gauge" : { "type" : "number" } } }, "value length" : { "description": "Thecan be numberone of valuesOKAY, inWARNING, theand data setFAILURE", "type": "number" } } } }, "mapping": { "description": "mapping pair", "type": "object", "properties": { string" }, "time" : { "oneOfdescription": { "$ref": "#/definitions/collectd_field", "collectd_string": { "type": "string" } }, "new_string": { "type": "string" } } }, "events": { "Time stamp at which the value was collected", "descriptiontype": "Mappings from collectd events to other framework events"number" }, "type" : "object", { "properties": { "mappings": { "description": "arrayunit ofused mappingsto frommeasure collectd to other frameworksa value", "type": "array", "items": { "$ref": "#/definitions/mapping" } } }, "required": [ "mappings" ] }, "meters "type": {"string" "description": "Mappings from collectd meters to other framework meters"}, "type instance " : "object", { "properties": { "mappings": { "description": "arrayused ofto mappingsdistinguish frombetween collectd to other frameworks", "type": "array", "items": { "$ref": "#/definitions/mapping" } } }, "required": [ "mappings" ] values that have an identical type", }, "resource "type": {"string" "description": "Mappings from collectd resources to other framework resources"}, "typevalues" : "object",{ "properties": { "mappings": { "description": "array of mappings from collectd to other frameworks", " "type": "arrayobject", "items": { "$ref": "#/definitions/mapping" } } }, "required": [ "mappings" ] }, "types": { "anyOf" : { "description": "Mappings from collectd meter types to other framework meter types", "absolute" : { "type" : "objectstring" } , "properties" "counter" : { "mappings": { "description": "array of mappings from collectd to other frameworks", "type": "array", "items": { "$ref": "#/definitions/mapping" } } }, "required": [ "mappings" ] "type" : "string" }, "derive" : { "type" : "string" }, }, "timestamps": { "gauge" : { "descriptiontype" : "string"Mappings from collectd timestamps to other framework timestamps", }, "actual_values" : { "type" : "string" } "type": "object", } }, "propertiesvalue length" : { "mappings": { "description": "array of mappings from collectd to other frameworks", "type": "array", "items": { "$ref": "#/definitions/mapping", "conversion": "string" } } }, "required": [ "mappings" ] "description": "The number of values in the data set", "type": "number" }, "units": { "description": "Mappings from collectd} units to other framework units", } "type": "object", }, "mappings": { "propertiesdescription": { "mappings": { "description": "array of mappings from collectd to other frameworks", "mapping pair", "type": "arrayobject", "items": { "$ref": "#/definitions/mapping", "unit_conversion": "string" } } }, "required": [ "mappings" ] "properties": { "oneOf": { } }, "field_mappings": { "type": "object", "oneOf": [ { "$ref": "#/definitions/mapping" } ] } } |
Taking the following ceilometer meter as an example:
Code Block |
---|
- name: 'vcpus' collectd_field", event_type: 'compute.instance.*' "collectd_string": { "type": 'gauge' "string" } unit: 'vcpu' volume: $.payload.vcpus }, user_id: $.payload.user_id project_id: $.payload.tenant_id resource_id: $.payload.instance_id "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
...