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 }} |
get | Get value by key | {{ get .Fields "cpu" }} |
initial | 除最后一个元素外的所有元素 | {{ .Fields | keys | initial }} |
last | 最后一个元素 | {{ .Fields | keys | last }} |
upper | 大写字符串 | {{ .Name | upper }} |
lower | 小写字符串 | {{ .Tag "host" | lower }} |
有关可用函数的完整列表,请参阅 Sprig 文档。
此页面是否有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一员!我们欢迎并鼓励您对 Telegraf 和本文档提出反馈和 bug 报告。要获取支持,请使用以下资源
具有年度合同或支持合同的客户可以 联系 InfluxData 支持。