# Graphite The Graphite data format is translated from Telegraf Metrics using either the template pattern or tag support method. You can select between the two methods using the [`graphite_tag_support`](#graphite_tag_support) option. When set, the tag support method is used, otherwise the [Template Pattern][templates] is used. [templates]: /docs/TEMPLATE_PATTERN.md ## Configuration ```toml [[outputs.file]] ## Files to write to, "stdout" is a specially handled file. files = ["stdout", "/tmp/metrics.out"] ## Data format to output. ## Each data format has its own unique set of configuration options, read ## more about them here: ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_OUTPUT.md data_format = "graphite" ## Prefix added to each graphite bucket prefix = "telegraf" ## Graphite template pattern template = "host.tags.measurement.field" ## Graphite templates patterns ## 1. Template for cpu ## 2. Template for disk* ## 3. Default template # templates = [ # "cpu tags.measurement.host.field", # "disk* measurement.field", # "host.measurement.tags.field" #] ## Strict sanitization regex ## This is the default sanitization regex that is used on data passed to the ## graphite serializer. Users can add additional characters here if required. ## Be aware that the characters, '/' '@' '*' are always replaced with '_', ## '..' is replaced with '.', and '\' is removed even if added to the ## following regex. # graphite_strict_sanitize_regex = '[^a-zA-Z0-9-:._=\p{L}]' ## Support Graphite tags, recommended to enable when using Graphite 1.1 or later. # graphite_tag_support = false ## Applied sanitization mode when graphite tag support is enabled. ## * strict - uses the regex specified above ## * compatible - allows for greater number of characters # graphite_tag_sanitize_mode = "strict" ## Character for separating metric name and field for Graphite tags # graphite_separator = "." ``` ### graphite_tag_support When the `graphite_tag_support` option is enabled, the template pattern is not used. Instead, tags are encoded using [Graphite tag support](http://graphite.readthedocs.io/en/latest/tags.html) added in Graphite 1.1. The `metric_path` is a combination of the optional `prefix` option, measurement name, and field name. The tag `name` is reserved by Graphite, any conflicting tags and will be encoded as `_name`. **Example Conversion**: ```text cpu,cpu=cpu-total,dc=us-east-1,host=tars usage_idle=98.09,usage_user=0.89 1455320660004257758 => cpu.usage_user;cpu=cpu-total;dc=us-east-1;host=tars 0.89 1455320690 cpu.usage_idle;cpu=cpu-total;dc=us-east-1;host=tars 98.09 1455320690 ``` With set option `graphite_separator` to "_" ```text cpu,cpu=cpu-total,dc=us-east-1,host=tars usage_idle=98.09,usage_user=0.89 1455320660004257758 => cpu_usage_user;cpu=cpu-total;dc=us-east-1;host=tars 0.89 1455320690 cpu_usage_idle;cpu=cpu-total;dc=us-east-1;host=tars 98.09 1455320690 ``` The `graphite_tag_sanitize_mode` option defines how we should sanitize the tag names and values. Possible values are `strict`, or `compatible`, with the default being `strict`. When in `strict` mode Telegraf uses the same rules as metrics when not using tags. When in `compatible` mode Telegraf allows more characters through, and is based on the Graphite specification: >Tag names must have a length >= 1 and may contain any ascii characters except `;!^=`. Tag values must also have a length >= 1, they may contain any ascii characters except `;` and the first character must not be `~`. UTF-8 characters may work for names and values, but they are not well tested and it is not recommended to use non-ascii characters in metric names or tags. Metric names get indexed under the special tag name, if a metric name starts with one or multiple ~ they simply get removed from the derived tag value because the ~ character is not allowed to be in the first position of the tag value. If a metric name consists of no other characters than ~, then it is considered invalid and may get dropped.