文档文档

配置选项

Telegraf 使用配置文件来定义要启用的插件以及 Telegraf 启动时要使用的设置。每个 Telegraf 插件都有自己的一组配置选项。Telegraf 还提供了用于配置特定 Telegraf 设置的全局选项。

请参阅开始使用以快速启动并运行 Telegraf。

生成配置文件

telegraf config 命令允许您使用 Telegraf 的插件列表生成配置文件。

创建具有默认输入和输出插件的配置

要生成一个启用默认输入和输出插件的配置文件,请在终端中输入以下命令

telegraf config > telegraf.conf
.\telegraf.exe config > telegraf.conf

生成的文件包含所有可用插件的设置——一些已启用,其余的被注释掉。

创建具有特定输入和输出插件的配置文件

要生成仅包含特定插件设置的配置文件,请使用 --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.cpuinputs.http_listener_v2outputs.influxdb_v2outputs.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——例如

  1. 配置插件部分并为部分配置分配与 .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"
    ... 
    
  2. 在启动 Telegraf 之前,运行您的自定义脚本将 main.opcuagroup_1.opcuagroup_2.opcua 连接成一个有效的 telegraf.conf

  3. 使用完整且有效的 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 配置

[agent] 部分包含以下配置选项

  • interval:所有输入的默认数据收集间隔
  • round_interval:将收集间隔四舍五入到 interval。例如,如果 interval 设置为 10s,则 agent 将在 :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_intervalflush_interval + flush_jitter
  • flush_jitter:随机抖动刷新间隔。这主要是为了避免运行大量 Telegraf 实例的用户出现大量写入峰值。例如,flush_jitter5sflush_interval10s 意味着刷新每 10-15 秒发生一次。
  • precision:收集的指标四舍五入到以 interval(整数 + 单位,例如:1ns1us1ms1s)指定的精度。精度不用于服务输入,例如 logparserstatsd
  • 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 agent 中设置 host 标签。
  • skip_processors_after_aggregators:如果为 true,则在聚合器之后处理器不再运行。默认为 false。

输入配置

以下配置参数适用于所有输入

  • alias:命名插件的实例。
  • interval:收集此指标的频率。普通插件使用单个全局间隔,但如果某个特定输入应该更频繁或更不频繁地运行,您可以在此处配置。可以增加 interval 以降低数据输入速率限制。
  • precision:覆盖 agent 的 precision 设置。收集的指标四舍五入到以 interval 指定的精度。当此值在服务输入(例如:statsd)上设置时,在同一时间戳发生的多个事件可能会被输出数据库合并。
  • collection_jitter:覆盖 agent 的 collection_jitter 设置。
    收集抖动用于随机抖动收集 interval
  • name_override:覆盖测量的基本名称。(默认为输入的名称)。
  • name_prefix:指定要附加到测量名称的前缀。
  • name_suffix:指定要附加到测量名称的后缀。
  • tags:应用于特定输入的测量的标签映射。

输出配置

  • alias:命名插件的实例。
  • flush_interval:刷新之间的最大时间。使用此设置可在每个插件的基础上覆盖 agent flush_interval
  • flush_jitter:抖动刷新间隔的时间量。使用此设置可在每个插件的基础上覆盖 agent flush_jitter
  • metric_batch_size:一次发送的最大指标数。使用此设置可在每个插件的基础上覆盖 agent metric_batch_size
  • metric_buffer_limit:要缓冲的最大未发送指标数。使用此设置可在每个插件的基础上覆盖 agent metric_buffer_limit
  • name_override:覆盖测量的基本名称。(默认为输出的名称)。
  • name_prefix:指定要附加到测量名称的前缀。
  • name_suffix:指定要附加到测量名称的后缀。

聚合器配置

以下配置参数适用于所有聚合器

  • alias:命名插件的实例。
  • period:刷新和清除每个聚合器的周期。所有时间戳在此周期之外发送的指标都将被聚合器忽略。
  • delay:每个聚合器刷新之前的延迟。这是为了控制聚合器在输入插件之前等待接收指标的时间长度,以防聚合器正在刷新而输入正在相同的间隔上收集。
  • grace:即使指标在聚合周期之外,插件聚合指标的持续时间。当 agent 预期接收到延迟指标并且可以将其滚动到下一个聚合周期时,需要此设置。
  • drop_original:如果为 true,则原始指标将被聚合器丢弃,并且不会发送到输出插件。
  • name_override:覆盖测量的基本名称。(默认为输入的名称)。
  • name_prefix:指定要附加到测量名称的前缀。
  • name_suffix:指定要附加到测量名称的后缀。
  • tags:应用于特定输入的测量的标签映射。

有关如何配置 SNMP、MQTT 和 PostGRE SQL 插件以将数据导入 Telegraf 的演示,请观看以下视频

处理器配置

以下配置参数适用于所有处理器

  • alias:命名插件的实例。
  • order:这是处理器执行的顺序。如果未指定,则顺序是随机的。

指标过滤参数可用于限制处理器处理的指标。排除的指标将传递到下游的下一个处理器。

指标过滤

过滤器可以为每个输入、输出、处理器或聚合器配置。

过滤器

  • namepass:glob 模式字符串数组。仅发出测量名称与此列表中的模式匹配的点。
  • namedropnamepass 的反向。丢弃测量名称与此列表中的模式匹配的点。此测试适用于它们通过 namepass 测试之后的点。
  • fieldpass:glob 模式字符串数组。仅发出字段键与此列表中的模式匹配的字段。
  • fielddropfieldpass 的反向。丢弃字段键与其中一个模式匹配的字段。
  • tagpass:将标签键映射到 glob 模式字符串数组的表。仅发出包含表中标签键和标签值与关联模式之一匹配的点。
  • tagdroptagpass 的反向。丢弃包含表中标签键和标签值与关联模式之一匹配的点。此测试适用于它们通过 tagpass 测试之后的点。
  • taginclude:glob 模式字符串数组。仅发出标签键与其中一个模式匹配的标签。与 tagpass 不同,如果标签通过,tagpass 会发出整个点,而 taginclude 会从点中删除所有不匹配的标签。此过滤器可用于输入和输出,但在输入上使用时效率更高(过滤掉标签在摄取期间效率更高)。
  • tagexcludetaginclude 的反向。从点中丢弃标签键与其中一个模式匹配的标签。

将 tagpass 和 tagdrop 包含在插件定义的末尾

由于 TOML 的解析方式,tagpasstagdrop 参数必须在插件定义的末尾定义,否则后续的插件配置选项将被解释为 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_*"]

输入配置:tagpasstagdrop

注意 tagpasstagdrop 参数必须在插件定义的末尾定义,否则后续的插件配置选项将被解释为 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*" ]

输入配置:fieldpassfielddrop

# 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*"]

输入配置:namepassnamedrop

# 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_*"]

输入配置:tagincludetagexclude

# 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"]

输入配置:prefixsuffixoverride

以下示例发出名称为 cpu_total 的测量

[[inputs.cpu]]
  name_suffix = "_total"
  percpu = false
  totalcpu = true

以下示例发出名称为 foobar 的测量

[[inputs.cpu]]
  name_override = "foobar"
  percpu = false
  totalcpu = true

输入配置:tags

以下示例发出带有两个附加标签的测量:tag1=footag2=bar

注意:顺序很重要;[inputs.cpu.tags] 表必须在插件定义的末尾

[[inputs.cpu]]
  percpu = false
  totalcpu = true
  [inputs.cpu.tags]
    tag1 = "foo"
    tag2 = "bar"

相同类型的多个输入

相同类型的其他输入(或输出)可以通过在配置文件中定义这些实例来指定。为避免测量冲突,请使用 name_overridename_prefixname_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 秒收集并发出系统 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 agent 的更多信息,请观看以下视频


此页是否对您有帮助?

感谢您的反馈!


Flux 的未来

Flux 即将进入维护模式。您可以继续像现在一样使用它,而无需对您的代码进行任何更改。

阅读更多

现已全面上市

InfluxDB 3 Core 和 Enterprise

快速启动。更快扩展。

获取更新

InfluxDB 3 Core 是一个开源、高速、最新数据引擎,可实时收集和处理数据,并将其持久化到本地磁盘或对象存储。InfluxDB 3 Enterprise 基于 Core 的基础构建,增加了高可用性、读取副本、增强的安全性以及数据压缩,从而实现更快的查询和优化的存储。InfluxDB 3 Enterprise 的免费层可供非商业家庭或业余爱好者使用。

有关更多信息,请查看