文档

配置选项

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 标志在 Telegraf 配置中包含指定目录中以 .conf 结尾的文件。

在大多数系统中,默认位置是 /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="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_intervalflush_interval + flush_jitter
  • flush_jitter:通过随机量抖动刷新间隔。这主要是为了避免用户运行大量 Telegraf 实例时出现大的写入峰值。例如,flush_jitter5sflush_interval10s,意味着刷新发生在每 10-15 秒。
  • precision:收集的指标将舍入到指定的精度(整数 + 单位,例如: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"。有关时区选项和格式,请参阅 timezone options and formats
  • 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:一组glob模式字符串数组。仅发送测量名称与列表中某个模式匹配的点。
  • namedropnamepass的逆操作。丢弃测量名称与列表中某个模式匹配的点。此测试在namepass测试之后对点应用。
  • fieldpass:一组glob模式字符串数组。仅发送字段键与列表中某个模式匹配的字段。
  • fielddropfieldpass的逆操作。丢弃字段键匹配其中任何一个模式的字段。
  • tagpass:将标签键映射到glob模式字符串数组的表。仅发送包含表中标签键且标签值匹配关联模式之一的点。
  • tagdroptagpass的逆操作。丢弃包含表中标签键且标签值匹配关联模式之一的点。此测试在tagpass测试之后对点应用。
  • taginclude:一组glob模式字符串数组。仅发送标签键匹配列表中某个模式的标签。与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

输入配置:标签

以下示例发送具有两个附加标签的测量: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 = [ "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秒收集并发射系统负载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代理的信息,请观看以下视频


这个页面有帮助吗?

感谢您的反馈!


Flux的未来

Flux将进入维护模式。您可以继续按当前方式使用它,而无需对您的代码进行任何更改。

阅读更多

InfluxDB v3增强功能和InfluxDB Clustered现已上市

新功能,包括更快的查询性能和管理工具,推进了InfluxDB v3产品线。InfluxDB Clustered现已上市。

InfluxDB v3性能和功能

InfluxDB v3产品线在查询性能方面取得了重大提升,并提供了新的管理工具。这些增强包括用于监控InfluxDB集群健康情况的操作仪表板,InfluxDB Cloud Dedicated中的单点登录(SSO)支持,以及用于令牌和数据库的新管理API。

了解新的v3增强功能


InfluxDB Clustered上市

InfluxDB Clustered现已上市,并为您在自管理的堆栈中提供了InfluxDB v3的强大功能。

与我们讨论InfluxDB Clustered