Documentation

Telegraf template patterns

Template patterns describe how a dot-delimited string should be mapped to and from Telegraf metrics.

A template has the form:

"host.mytag.mytag.measurement.measurement.field*"

Where the following keywords can be set:

  • measurement: specifies that this section of the graphite bucket corresponds to the measurement name. This can be specified multiple times.
  • field: specifies that this section of the graphite bucket corresponds to the field name. This can be specified multiple times.
  • measurement*: specifies that all remaining elements of the graphite bucket correspond to the measurement name.
  • field*: specifies that all remaining elements of the graphite bucket correspond to the field name.

Any part of the template that is not a keyword is treated as a tag key. This can also be specified multiple times.

Note the following:

  • measurement must be specified in your template.
  • field* cannot be used in conjunction with measurement*.

Examples

Measurement and tag templates

A basic template specifies a single transformation to apply to all incoming metrics:

templates = [
    "region.region.measurement*"
]

This results in the following Graphite to Telegraf metric transformation.

us.west.cpu.load 100
=> cpu.load,region=us.west value=100

You can specify multiple templates and differentiate them using filters.

templates = [
    "*.*.* region.region.measurement", # All 3-part measurements will match this one.
    "*.*.*.* region.region.host.measurement", # All 4-part measurements will match this one.
]

Field templates

The field keyword tells Telegraf to give the metric that field name.

separator = "_"
templates = [
    "measurement.measurement.field.field.region"
]

This results in the following Graphite to Telegraf metric transformation.

cpu.usage.idle.percent.eu-east 100
=> cpu_usage,region=eu-east idle_percent=100

The field key can also be derived from all remaining elements of the graphite bucket by specifying field*:

separator = "_"
templates = [
    "measurement.measurement.region.field*"
]

This results in the following Graphite to Telegraf metric transformation.

cpu.usage.eu-east.idle.percentage 100
=> cpu_usage,region=eu-east idle_percentage=100

Filter templates

Use glob matching to filter templates to use based on the name of the bucket:

templates = [
    "cpu.* measurement.measurement.region",
    "mem.* measurement.measurement.host"
]

This results in the following transformation:

cpu.load.eu-east 100
=> cpu_load,region=eu-east value=100

mem.cached.localhost 256
=> mem_cached,host=localhost value=256

Add tags

To add additional tags to a metric, include them after the template pattern using the InfluxDB line protocol tag format (comma-separated key-value pairs).

templates = [
    "measurement.measurement.field.region datacenter=1a"
]

This results in the following Graphite to Telegraf metric transformation.

cpu.usage.idle.eu-east 100
=> cpu_usage,region=eu-east,datacenter=1a idle=100

Was this page helpful?

Thank you for your feedback!


New in InfluxDB 3.5

Key enhancements in InfluxDB 3.5 and the InfluxDB 3 Explorer 1.3.

See the Blog Post

InfluxDB 3.5 is now available for both Core and Enterprise, introducing custom plugin repository support, enhanced operational visibility with queryable CLI parameters and manual node management, stronger security controls, and general performance improvements.

InfluxDB 3 Explorer 1.3 brings powerful new capabilities including Dashboards (beta) for saving and organizing your favorite queries, and cache querying for instant access to Last Value and Distinct Value caches—making Explorer a more comprehensive workspace for time series monitoring and analysis.

For more information, check out:

InfluxDB Docker latest tag changing to InfluxDB 3 Core

On February 3, 2026, the latest tag for InfluxDB Docker images will point to InfluxDB 3 Core. To avoid unexpected upgrades, use specific version tags in your Docker deployments.

If using Docker to install and run InfluxDB, the latest tag will point to InfluxDB 3 Core. To avoid unexpected upgrades, use specific version tags in your Docker deployments. For example, if using Docker to run InfluxDB v2, replace the latest version tag with a specific version tag in your Docker pull command–for example:

docker pull influxdb:2