From 5dbf626e6584972cc6a2428fe5e4d66b740d4b7a Mon Sep 17 00:00:00 2001 From: Cameron Sparr Date: Fri, 12 Feb 2016 15:09:34 -0700 Subject: [PATCH] Data format output documentation --- DATA_FORMATS_OUTPUT.md | 94 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 DATA_FORMATS_OUTPUT.md diff --git a/DATA_FORMATS_OUTPUT.md b/DATA_FORMATS_OUTPUT.md new file mode 100644 index 000000000..af129489b --- /dev/null +++ b/DATA_FORMATS_OUTPUT.md @@ -0,0 +1,94 @@ +# Telegraf Output Data Formats + +Telegraf metrics, like InfluxDB +[points](https://docs.influxdata.com/influxdb/v0.10/write_protocols/line/), +are a combination of four basic parts: + +1. Measurement Name +1. Tags +1. Fields +1. Timestamp + +In InfluxDB line protocol, these 4 parts are easily defined in textual form: +`measurement_name[,tag1=val1,...] field1=val1[,field2=val2,...] [timestamp]` + +For Telegraf outputs that write textual data (such as `kafka`, `mqtt`, and `file`), +InfluxDB line protocol was originally the only available output format. But now +we are normalizing telegraf metric "serializers" into a plugin-like format across +all output plugins that can support it. You will be able to identify a plugin +that supports different data formats by the presence of a `data_format` +config option, for example, in the file plugin: + +```toml +[[outputs.file]] + ### Files to write to, "stdout" is a specially handled file. + files = ["stdout", "/tmp/metrics.out"] + + ### Data format to output. This can be "influx" or "graphite" + ### Each data format has it's own unique set of configuration options, read + ### more about them here: + ### https://github.com/influxdata/telegraf/blob/master/DATA_FORMATS_OUTPUT.md + data_format = "influx" + + ### Additional configuration options go here +``` + +Each data_format has an additional set of configuration options available, which +I'll go over below. + +## Influx: + +There are no additional configuration options for InfluxDB line-protocol. The +metrics are parsed directly into Telegraf metrics. + +#### Influx Configuration: + +```toml +[[outputs.file]] + ### Files to write to, "stdout" is a specially handled file. + files = ["stdout", "/tmp/metrics.out"] + + ### Data format to output. This can be "influx" or "graphite" + ### Each data format has it's own unique set of configuration options, read + ### more about them here: + ### https://github.com/influxdata/telegraf/blob/master/DATA_FORMATS_OUTPUT.md + data_format = "influx" + + ### Additional configuration options go here +``` + +## Graphite: + +The Graphite data format translates Telegraf metrics into _dot_ buckets. +The format is: + +``` +[prefix].[host tag].[all tags (alphabetical)].[measurement name].[field name] value timestamp +``` + +Which means the following influx metric -> graphite conversion would happen: + +``` +cpu,cpu=cpu-total,dc=us-east-1,host=tars usage_idle=98.08869456589632,usage_user=0.886945658963148 1455320660004257758 +=> +tars.cpu-total.us-east-1.cpu.usage_user 0.5620784411691232 1455320690 +tars.cpu-total.us-east-1.cpu.usage_idle 98.5885585810642 1455320690 +``` + +`prefix` is a configuration option when using the graphite output data format. + +#### Graphite Configuration: + +```toml +[[outputs.file]] + ### Files to write to, "stdout" is a specially handled file. + files = ["stdout", "/tmp/metrics.out"] + + ### Data format to output. This can be "influx" or "graphite" + ### Each data format has it's own unique set of configuration options, read + ### more about them here: + ### https://github.com/influxdata/telegraf/blob/master/DATA_FORMATS_OUTPUT.md + data_format = "influx" + + prefix = "telegraf" +```