配置选项
Telegraf 使用配置文件来定义要启用的插件以及 Telegraf 启动时要使用的设置。每个 Telegraf 插件都有自己的一组配置选项。Telegraf 还提供用于配置特定 Telegraf 设置的全局选项。
请参阅快速入门以快速启动并运行 Telegraf。
生成配置文件
telegraf config
命令允许您使用 Telegraf 的插件列表生成配置文件。
创建具有默认输入和输出插件的配置
要生成启用默认输入和输出插件的配置文件,请在终端中输入以下命令
生成的文件包含所有可用插件的设置——有些已启用,其余的则被注释掉。
创建具有特定输入和输出插件的配置文件
要生成仅包含特定插件设置的配置文件,请使用--input-filter
和--output-filter
选项来指定输入插件和输出插件。使用冒号 (:
) 分隔插件名称。
语法
telegraf \
--input-filter <INPUT_PLUGIN_NAME>[:<INPUT_PLUGIN_NAME>] \
--output-filter <OUTPUT_PLUGIN_NAME>[:<OUTPUT_PLUGIN_NAME>] \
config > telegraf.conf
.\telegraf.exe `
--input-filter <INPUT_PLUGIN_NAME>[:<INPUT_PLUGIN_NAME>] `
--output-filter <OUTPUT_PLUGIN_NAME>[:<OUTPUT_PLUGIN_NAME>] `
config > telegraf.conf
示例
以下示例显示了如何包含inputs.cpu
、inputs.http_listener_v2
、outputs.influxdb_v2
和outputs.file
插件的配置部分
telegraf \
--input-filter cpu:http_listener_v2 \
--output-filter influxdb_v2:file \
config > telegraf.conf
.\telegraf.exe `
--input-filter cpu:http_listener_v2 `
--output-filter influxdb_v2:file `
config > telegraf.conf
有关更高级的配置详细信息,请参阅配置文档。
配置文件位置
启动 Telegraf 时,使用--config
标志指定配置文件位置
- 文件名和路径,例如:
--config /etc/default/telegraf
- 远程 URL 端点,例如:
--config "http://remote-URL-endpoint"
使用--config-directory
标志将指定目录中以.conf
结尾的文件包含在 Telegraf 配置中。
在大多数系统中,默认位置是主配置文件的/etc/telegraf/telegraf.conf
,以及配置文件的目录/etc/telegraf/telegraf.d
(在 Windows 上,为C:\"Program Files"\Telegraf\telegraf.d
)。
Telegraf 单独处理每个配置文件,有效的配置是所有文件的并集。如果任何文件不是有效的配置,Telegraf 将返回错误。
Telegraf 不支持部分配置
Telegraf 在处理配置文件之前不会连接配置文件。您提供的每个配置文件都必须是有效的配置。
如果您想使用单独的文件来管理配置,您可以使用自己的自定义代码来连接和预处理文件,然后将完整的配置提供给 Telegraf——例如
配置插件部分并为部分配置分配与
.conf
不同的文件扩展名,以防止 Telegraf 加载它们——例如# main.opcua: Main configuration file ... [[inputs.opcua_listener]] name = "PluginSection" endpoint = "opc.tcp://10.0.0.53:4840" ...
# group_1.opcua [[inputs.opcua_listener.group]] name = "SubSection1" ...
# group_2.opcua [[inputs.opcua_listener.group]] name = "SubSection2" ...
在启动 Telegraf 之前,运行您的自定义脚本将
main.opcua
、group_1.opcua
、group_2.opcua
连接成有效的telegraf.conf
。使用完整且有效的
telegraf.conf
配置启动 Telegraf。
设置环境变量
通过将环境变量括在${}
中,可以在配置文件中的任何位置使用环境变量。对于字符串,变量必须用引号括起来(例如,"test_${STR_VAR}"
)。对于数字和布尔值,变量必须不加引号(例如,${INT_VAR}
,${BOOL_VAR}
)。
您还可以使用 Linux export
命令设置环境变量:export password=mypassword
注意:使用密钥存储或环境变量来存储敏感凭据。
示例:Telegraf 环境变量
在 Telegraf 环境变量文件 (/etc/default/telegraf
) 中设置环境变量——例如
USER="alice"
INFLUX_URL="https://127.0.0.1:8086"
INFLUX_SKIP_DATABASE_CREATION="true"
INFLUX_PASSWORD="monkey123"
在 Telegraf 配置文件 (/etc/telegraf.conf
) 中,引用变量——例如
[global_tags]
user = "${USER}"
[[inputs.mem]]
[[outputs.influxdb]]
urls = ["${INFLUX_URL}"]
skip_database_creation = ${INFLUX_SKIP_DATABASE_CREATION}
password = "${INFLUX_PASSWORD}"
当 Telegraf 运行时,有效的配置如下
[global_tags]
user = "alice"
[[outputs.influxdb]]
urls = "https://127.0.0.1:8086"
skip_database_creation = true
password = "monkey123"
全局标签
可以在配置文件的[global_tags]
部分以key="value"
格式指定全局标签。Telegraf 将全局标签应用于在此主机上收集的所有指标。
代理配置
[agent]
部分包含以下配置选项
- interval:所有输入的默认数据收集间隔
- round_interval:将收集间隔四舍五入为
interval
。例如,如果interval
设置为10s
,则代理在 :00、:10、:20 等时刻收集数据。 - metric_batch_size:以最多
metric_batch_size
个指标的批次将指标发送到输出。 - metric_buffer_limit:为每个输出缓存
metric_buffer_limit
个指标,并在成功写入时刷新此缓冲区。这应该是metric_batch_size
的倍数,并且不能小于metric_batch_size
的 2 倍。 - collection_jitter:用于通过随机量抖动收集。每个插件在收集之前在抖动范围内随机休眠一段时间。这可以用于避免许多插件同时查询诸如 sysfs 之类的东西,这可能会对系统产生可衡量的影响。
- flush_interval:所有输出的默认数据刷新间隔。请勿将其设置低于
interval
。最大flush_interval
为flush_interval
+flush_jitter
- flush_jitter:通过随机量抖动刷新间隔。这主要是为了避免运行大量 Telegraf 实例的用户出现大量写入峰值。例如,
flush_jitter
为5s
,flush_interval
为10s
表示每 10-15 秒发生刷新。 - precision:收集的指标四舍五入到指定为
interval
的精度(整数 + 单位,例如:1ns
、1us
、1ms
和1s
。精度不用于服务输入,例如logparser
和statsd
。 - debug:在调试模式下运行 Telegraf。
- quiet:在静默模式下运行 Telegraf(仅错误消息)。
- logtarget:控制日志的目标,可以设置为
"file"
、"stderr"
,或者在 Windows 上,设置为"eventlog"
。当设置为"file"
时,输出文件由 logfile 设置确定。 - logfile:如果 logtarget 设置为
“file”
,则指定日志文件名。如果设置为空字符串,则日志将写入 stderr。 - logfile_rotation_interval:在指定的时间间隔后轮换日志文件。当设置为
0
时,不执行基于时间的轮换。 - logfile_rotation_max_size:当日志文件大于指定大小时轮换日志文件。当设置为
0
时,不执行基于大小的轮换。 - logfile_rotation_max_archives:要保留的最大轮换存档数,任何较旧的日志都将被删除。如果设置为
-1
,则不删除任何存档。 - log_with_timezone:设置用于记录日志的时区——例如,
"America/Chicago"
。要使用本地时间,请设置为"local"
。请参阅时区选项和格式。 - hostname:覆盖默认主机名,如果为空则使用
os.Hostname()
。 - omit_hostname:如果为 true,则不在 Telegraf 代理中设置
host
标签。 - skip_processors_after_aggregators:如果为 true,则处理器在聚合器之后不再运行。默认为 false。
输入配置
以下配置参数适用于所有输入
- alias:命名插件的实例。
- interval:收集此指标的频率。普通插件使用单个全局间隔,但是如果某个特定输入应该更少或更频繁地运行,您可以在此处配置它。可以增加
interval
以降低数据输入速率限制。 - precision:覆盖代理的
precision
设置。收集的指标四舍五入到指定为interval
的精度。当此值在服务输入(例如statsd
)上设置时,在同一时间戳发生的多个事件可能会被输出数据库合并。 - collection_jitter:覆盖代理的
collection_jitter
设置。
收集抖动用于通过随机interval
抖动收集 - name_override:覆盖测量的基本名称。(默认为输入的名称)。
- name_prefix:指定要附加到测量名称的前缀。
- name_suffix:指定要附加到测量名称的后缀。
- tags:要应用于特定输入的测量的标签映射。
输出配置
- alias:命名插件的实例。
- flush_interval:刷新之间的最大时间。使用此设置可在每个插件的基础上覆盖代理
flush_interval
。 - flush_jitter:抖动刷新间隔的时间量。使用此设置可在每个插件的基础上覆盖代理
flush_jitter
。 - metric_batch_size:一次发送的最大指标数。使用此设置可在每个插件的基础上覆盖代理
metric_batch_size
。 - metric_buffer_limit:要缓冲的最大未发送指标数。使用此设置可在每个插件的基础上覆盖代理
metric_buffer_limit
。 - name_override:覆盖测量的基本名称。(默认为输出的名称)。
- name_prefix:指定要附加到测量名称的前缀。
- name_suffix:指定要附加到测量名称的后缀。
聚合器配置
以下配置参数适用于所有聚合器
- alias:命名插件的实例。
- period:刷新和清除每个聚合器的周期。聚合器将忽略在此周期之外的时间戳发送的所有指标。
- delay:每个聚合器刷新之前的延迟。这是为了控制聚合器在从输入插件接收指标之前等待多长时间,以防聚合器正在刷新而输入正在相同的间隔上收集。
- grace:即使指标在聚合周期之外,插件聚合指标的持续时间。当代理预计会收到延迟指标并且可以将其滚动到下一个聚合周期时,需要此设置。
- drop_original:如果为 true,则原始指标将被聚合器丢弃,并且不会发送到输出插件。
- name_override:覆盖测量的基本名称。(默认为输入的名称)。
- name_prefix:指定要附加到测量名称的前缀。
- name_suffix:指定要附加到测量名称的后缀。
- tags:要应用于特定输入的测量的标签映射。
有关如何配置 SNMP、MQTT 和 PostGRE SQL 插件以将数据导入 Telegraf 的演示,请观看以下视频
处理器配置
以下配置参数适用于所有处理器
- alias:命名插件的实例。
- order:这是处理器执行的顺序。如果未指定,则顺序是随机的。
指标过滤参数可用于限制处理器处理的指标。排除的指标将传递到下游处理器。
指标过滤
可以为每个输入、输出、处理器或聚合器配置过滤器。
过滤器
- namepass:glob 模式字符串数组。仅发出测量名称与此列表中的模式匹配的点。
- namedrop:
namepass
的逆向操作。丢弃测量名称与此列表中的模式匹配的点。此测试适用于在通过namepass
测试后的点。 - fieldpass:glob 模式字符串数组。仅发出字段键与此列表中的模式匹配的字段。
- fielddrop:
fieldpass
的逆向操作。丢弃字段键与模式之一匹配的字段。 - tagpass:将标签键映射到 glob 模式字符串数组的表。仅发出包含表中标签键和与关联模式之一匹配的标签值的点。
- tagdrop:
tagpass
的逆向操作。丢弃包含表中标签键和与关联模式之一匹配的标签值的点。此测试适用于在通过tagpass
测试后的点。 - taginclude:glob 模式字符串数组。仅发出标签键与模式之一匹配的标签。与
tagpass
(如果标签通过则发出整个点)相比,taginclude
从点中删除所有不匹配的标签。此过滤器可用于输入和输出,但在输入上使用时效率更高(在摄取期间过滤掉标签更有效)。 - tagexclude:
taginclude
的逆向操作。从点中丢弃标签键与模式之一匹配的标签。
将 tagpass 和 tagdrop 包含在插件定义的末尾
由于 TOML 的解析方式,tagpass
和tagdrop
参数必须在插件定义的末尾定义,否则后续的插件配置选项将被解释为 tagpass 和 tagdrop 表的一部分。
要了解有关指标过滤的更多信息,请观看以下视频
过滤示例
输入配置示例
以下示例配置收集每个 CPU 的数据,删除任何以time_
开头的字段,使用dc="denver-1"
标记测量值,然后以 10 秒的间隔将测量值输出到地址为192.168.59.103:8086
的名为telegraf
的 InfluxDB 数据库。
[global_tags]
dc = "denver-1"
[agent]
interval = "10s"
# OUTPUTS
[[outputs.influxdb]]
url = "http://192.168.59.103:8086" # required.
database = "telegraf" # required.
precision = "1s"
# INPUTS
[[inputs.cpu]]
percpu = true
totalcpu = false
# filter all fields beginning with 'time_'
fielddrop = ["time_*"]
输入配置:tagpass
和tagdrop
注意 tagpass
和tagdrop
参数必须在插件定义的末尾定义,否则后续的插件配置选项将被解释为 tagpass 和 tagdrop 表的一部分。
[[inputs.cpu]]
percpu = true
totalcpu = false
fielddrop = ["cpu_time"]
# Don't collect CPU data for cpu6 & cpu7
[inputs.cpu.tagdrop]
cpu = [ "cpu6", "cpu7" ]
[[inputs.disk]]
[inputs.disk.tagpass]
# tagpass conditions are OR, not AND.
# If the (filesystem is ext4 or xfs) OR (the path is /opt or /home)
# then the metric passes
fstype = [ "ext4", "xfs" ]
# Globs can also be used on the tag values
path = [ "/opt", "/home*" ]
输入配置:fieldpass
和fielddrop
# Drop all metrics for guest & steal CPU usage
[[inputs.cpu]]
percpu = false
totalcpu = true
fielddrop = ["usage_guest", "usage_steal"]
# Only store inode related metrics for disks
[[inputs.disk]]
fieldpass = ["inodes*"]
输入配置:namepass
和namedrop
# Drop all metrics about containers for kubelet
[[inputs.prometheus]]
urls = ["http://kube-node-1:4194/metrics"]
namedrop = ["container_*"]
# Only store rest client related metrics for kubelet
[[inputs.prometheus]]
urls = ["http://kube-node-1:4194/metrics"]
namepass = ["rest_client_*"]
输入配置:taginclude
和tagexclude
# Only include the "cpu" tag in the measurements for the cpu plugin.
[[inputs.cpu]]
percpu = true
totalcpu = true
taginclude = ["cpu"]
# Exclude the `fstype` tag from the measurements for the disk plugin.
[[inputs.disk]]
tagexclude = ["fstype"]
输入配置:prefix
、suffix
和override
以下示例发出名称为cpu_total
的测量值
[[inputs.cpu]]
name_suffix = "_total"
percpu = false
totalcpu = true
以下示例发出名称为foobar
的测量值
[[inputs.cpu]]
name_override = "foobar"
percpu = false
totalcpu = true
输入配置:标签
以下示例发出带有两个附加标签的测量值:tag1=foo
和tag2=bar
。
注意:顺序很重要;[inputs.cpu.tags]
表必须在插件定义的末尾。
[[inputs.cpu]]
percpu = false
totalcpu = true
[inputs.cpu.tags]
tag1 = "foo"
tag2 = "bar"
同一类型的多个输入
可以通过在配置文件中定义这些实例来指定同一类型的其他输入(或输出)。为避免测量冲突,请使用name_override
、name_prefix
或name_suffix
配置选项
[[inputs.cpu]]
percpu = false
totalcpu = true
[[inputs.cpu]]
percpu = true
totalcpu = false
name_override = "percpu_usage"
fielddrop = ["cpu_time*"]
输出配置示例
[[outputs.influxdb]]
urls = [ "https://127.0.0.1:8086" ]
database = "telegraf"
precision = "1s"
# Drop all measurements that start with "aerospike"
namedrop = ["aerospike*"]
[[outputs.influxdb]]
urls = [ "https://127.0.0.1:8086" ]
database = "telegraf-aerospike-data"
precision = "1s"
# Only accept aerospike data:
namepass = ["aerospike*"]
[[outputs.influxdb]]
urls = [ "https://127.0.0.1:8086" ]
database = "telegraf-cpu0-data"
precision = "1s"
# Only store measurements where the tag "cpu" matches the value "cpu0"
[outputs.influxdb.tagpass]
cpu = ["cpu0"]
聚合器配置示例
这将每 30 秒收集并发出系统 load1 指标的最小值/最大值,并丢弃原始值。
[[inputs.system]]
fieldpass = ["load1"] # collects system load1 metric.
[[aggregators.minmax]]
period = "30s" # send & clear the aggregate every 30s.
drop_original = true # drop the original metrics.
[[outputs.file]]
files = ["stdout"]
这将每 30 秒收集并发出交换指标的最小值/最大值,并丢弃原始值。由于namepass
参数,聚合器将不适用于系统负载指标。
[[inputs.swap]]
[[inputs.system]]
fieldpass = ["load1"] # collects system load1 metric.
[[aggregators.minmax]]
period = "30s" # send & clear the aggregate every 30s.
drop_original = true # drop the original metrics.
namepass = ["swap"] # only "pass" swap metrics through the aggregator.
[[outputs.file]]
files = ["stdout"]
要了解有关配置 Telegraf 代理的更多信息,请观看以下视频
此页面是否有帮助?
感谢您的反馈!