Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagebash
linenumberstrue
{
    "$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
languagebash
{
    "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

...