文档文档

Template 输出数据格式

使用 template 输出数据格式(序列化器)来格式化和输出 Telegraf 指标,使用自定义的 Go 模板。还支持 Sprig 辅助函数,以增强模板功能。

配置

[[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 = "template"

  ## Go template for formatting a single metric
  template = '{{ .Tag "host" }} {{ .Field "available" }}'

配置选项

  • template: 定义单个指标输出格式的 Go 模板字符串。模板上下文(“点”)是一个单一指标对象,具有访问标签和字段的方法。

模板方法

在模板中,使用以下方法访问指标数据

方法描述示例
.Name返回指标名称{{ .Name }}
.Tag "key"返回指定标签的值{{ .Tag "host" }}
.Field "key"返回指定字段的值{{ .Field "available" }}
.Tags返回所有标签的映射{{ .Tags }}
.Fields返回所有字段的映射{{ .Fields }}
.Time返回指标时间戳{{ .Time }}

示例

基本示例

输出主机名和字段值

[[outputs.file]]
  files = ["stdout"]
  data_format = "template"
  template = '{{ .Tag "host" }}: {{ .Field "usage_idle" }}'

输入指标

cpu,host=server01 usage_idle=98.5,usage_user=1.2 1640000000000000000

输出

server01: 98.5

多字段示例

输出多个格式化字段

[[outputs.file]]
  files = ["stdout"]
  data_format = "template"
  template = '{{ .Name }} on {{ .Tag "host" }}: idle={{ .Field "usage_idle" }}, user={{ .Field "usage_user" }}'

输出

cpu on server01: idle=98.5, user=1.2

批处理模式

当输出插件在批处理中发出多个指标时,默认情况下模板会对每个指标重复。要为批处理定义自定义格式,请使用 batch_template 并设置 use_batch_format = true

在批处理模式下,模板上下文(“点”)是一个指标切片,而不是单个指标。

批处理配置

[[outputs.file]]
  files = ["stdout"]
  data_format = "template"

  ## Enable batch mode (required for batch_template)
  use_batch_format = true

  ## Template for formatting multiple metrics together
  batch_template = '''
{{- range $index, $metric := . -}}
{{- if $index }}, {{ end -}}
{{ $metric.Name }}
{{- end -}}
'''

使用 Sprig 函数的批处理示例

使用 Sprig 函数进行高级批处理格式化

[[outputs.file]]
  files = ["stdout"]
  data_format = "template"
  use_batch_format = true
  batch_template = '''
{{- range $metric := . -}}
{{ $metric.Tag "host" }}: {{ range $metric.Fields | keys | initial -}}
{{ . }}={{ get $metric.Fields . }}, {{ end -}}
{{ $metric.Fields | keys | last }}={{ $metric.Fields | values | last }}
{{ end -}}
'''

Sprig 函数

模板序列化器支持 Sprig 模板函数,用于字符串操作、数学运算和数据转换。

常用 Sprig 函数

函数描述示例
keys返回映射键{{ .Fields | keys }}
values返回映射值{{ .Fields | values }}
getGet value by key{{ get .Fields "cpu" }}
initial除最后一个元素外的所有元素{{ .Fields | keys | initial }}
last最后一个元素{{ .Fields | keys | last }}
upper大写字符串{{ .Name | upper }}
lower小写字符串{{ .Tag "host" | lower }}

有关可用函数的完整列表,请参阅 Sprig 文档


此页面是否有帮助?

感谢您的反馈!


InfluxDB 3.8 新特性

InfluxDB 3.8 和 InfluxDB 3 Explorer 1.6 的主要增强功能。

查看博客文章

InfluxDB 3.8 现已适用于 Core 和 Enterprise 版本,同时发布了 InfluxDB 3 Explorer UI 的 1.6 版本。本次发布着重于操作成熟度,以及如何更轻松地部署、管理和可靠地运行 InfluxDB。

更多信息,请查看

InfluxDB Docker 的 latest 标签将指向 InfluxDB 3 Core

在 **2026 年 2 月 3 日**,InfluxDB Docker 镜像的 latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。

如果使用 Docker 来安装和运行 InfluxDB,latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。例如,如果使用 Docker 运行 InfluxDB v2,请将 latest 版本标签替换为 Docker pull 命令中的特定版本标签 — 例如

docker pull influxdb:2