配置选项
Telegraf 使用配置文件来定义启用哪些插件以及 Telegraf 启动时使用哪些设置。 每个 Telegraf 插件都有自己的一组配置选项。 Telegraf 还提供全局选项以配置特定的 Telegraf 设置。
请参见 开始使用 以快速启动并运行 Telegraf。
生成配置文件
命令 telegraf config 允许您使用 Telegraf 的插件列表生成配置文件。
创建一个带有默认输入和输出插件的配置
要生成一个启用默认输入和输出插件的配置文件,请在终端中输入以下命令:
生成的文件包含所有可用插件的设置——一些是启用的,其余的是被注释掉的。
创建一个具有特定输入和输出插件的配置文件
要生成一个仅包含特定插件设置的配置文件,请使用 --input-filter 和 --output-filter 选项来指定 input plugins 和 output plugins。使用冒号 (:) 来分隔插件名称。
语法
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="http://localhost: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 = "http://localhost: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-15s 发生一次。 - 精度: 收集的指标会四舍五入到指定的精度作为一个
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: 如果为真,则不在Telegraf代理中设置
host标签。 - skip_processors_after_aggregators: 如果为真,处理器在聚合器之后不会再次运行。默认值为假。
输入配置
以下配置参数适用于所有输入:
- 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: 如果为真,原始度量会被聚合器丢弃,不会发送到输出插件。
- name_override: 覆盖测量的基础名称。(默认是输入的名称).
- name_prefix: 指定附加到测量名称的前缀。
- name_suffix: 指定要附加到测量名称的后缀。
- tags: 一个将标签应用于特定输入测量的映射。
有关如何配置 SNMP、MQTT 和 PostGRE SQL 插件以将数据导入 Telegraf 的演示,请查看以下视频:
处理器配置
以下配置参数适用于所有处理器:
- alias: 插件实例的名称。
- order: 这是处理器执行的顺序。如果未指定,则顺序是随机的。
可用于限制处理器处理的 度量过滤 参数。被排除的度量会传递给下一个处理器。
指标过滤
可以按照输入、输出、处理器或汇总器配置过滤器。
筛选器
- namepass:一个全局模式字符串的数组。 只有当测量名称与该列表中的模式匹配时,才会发出点。
- namedrop:
namepass的逆操作。 丢弃测量名称与此列表中的模式匹配的点。 此测试适用于在通过namepass测试 之后 的点。 - fieldpass: 一个 glob 模式字符串的数组。 仅发出字段键与此列表中的模式匹配的字段。
- fielddrop:
fieldpass的反转。 丢弃具有与某个模式匹配的字段键的字段。 - tagpass: 一个将标签键映射到全局模式字符串数组的表。仅发出包含表中标签键和与之一致的标签值的点。
- tagdrop:
tagpass的反向操作。 丢弃包含表中标签键及其与关联模式匹配的标签值的点。 该测试适用于在通过tagpass测试 之后 的点。 - taginclude: 一个 glob 模式字符串的数组。 只有标签键与模式匹配的标签才会被发出。 与
tagpass相比,taginclude会移除点中所有不匹配的标签。 这个过滤器可以用于输入和输出,但在输入时使用更有效(在接收过程中过滤标签更高效)。 - tagexclude:
与
taginclude相反。符合其中一个模式的标签键的标签将从该点中被丢弃。
在插件定义的末尾包含tagpass和tagdrop
由于TOML的解析方式, tagpass 和 tagdrop 参数必须在插件定义的 末尾 定义,否则后续的插件配置选项将被解释为tagpass和tagdrop表的一部分。
要了解更多关于度量过滤的信息,请观看以下视频:
过滤示例
输入配置示例
以下示例配置收集每个CPU的数据,删除任何以 time_ 开头的字段,用 dc="denver-1" 标记测量数据,然后以10秒的间隔将测量数据输出到名为 telegraf 的InfluxDB数据库,地址为 192.168.59.103:8086。
[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 = [ "http://localhost:8086" ]
database = "telegraf"
precision = "1s"
# Drop all measurements that start with "aerospike"
namedrop = ["aerospike*"]
[[outputs.influxdb]]
urls = [ "http://localhost:8086" ]
database = "telegraf-aerospike-data"
precision = "1s"
# Only accept aerospike data:
namepass = ["aerospike*"]
[[outputs.influxdb]]
urls = [ "http://localhost:8086" ]
database = "telegraf-cpu0-data"
precision = "1s"
# Only store measurements where the tag "cpu" matches the value "cpu0"
[outputs.influxdb.tagpass]
cpu = ["cpu0"]
聚合器配置示例:
这将每30秒收集并发出系统负载1指标的最小值/最大值,丢弃原始值。
[[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代理的更多信息,请观看以下视频: