...
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" : { }, "metadata" : { "description": "an opaque data structure that enables the passing of additional information about a value list", "type": "string" }, }, "plugin" : { "description": "used to identify the plugin", "type": "string" }, "plugin instance" : { }, "plugin instance" : { "description": "used to group a set of values together", "type": "string" }, "severity" : { "description": "can be one of OKAY, WARNING, and FAILURE", "type": "string" }, "time }, "severity" : { "description": "Time stamp at which the value was collected", "type": "number" }, "type" : { "description": "unitcan usedbe toone measureof aOKAY, value", "type": "string" }, "type instance " : { "description": "used to distinguish between values that have an identical type", WARNING, and FAILURE", "type": "string" }, "values" : { "type": "object", "anyOf" : { "absolute" : { "type" : "number" } , "counter }, "time" : { "type" : "number" }, "derive" : { "type" : "number" }, "gauge" : { "type" : "number" } } }, "value length" : { "description": "TheTime numberstamp ofat valueswhich inthe thevalue datawas setcollected", "type": "number" } } } }, "mapping": { }, "type" : { "description": "mapping pairunit used to measure a value", "type": "object", "properties": { "$ref": "#/definitions/collectd_field", "new_string": { "type": "string" } }, "required": [ "$ref", "value" ] } }, "field_mappings": { "type": "object", "oneOf": [ { "$ref": "#/definitions/mapping" } ] } } |
Taking the following ceilometer meter as an example:
Code Block |
---|
- name: 'vcpus'
event_type: 'compute.instance.*'
type: 'gauge'
unit: 'vcpu'
volume: $.payload.vcpus
user_id: $.payload.user_id
project_id: $.payload.tenant_id
resource_id: $.payload.instance_id
|
},
"type instance " : {
"description": "used to distinguish between values that have an identical type",
"type": "string"
},
"values" : {
"type": "object",
"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
...