文档文档

配置选项

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="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:收集的指标四舍五入到指定为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 代理中设置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 模式字符串数组。仅发出测量名称与此列表中的模式匹配的点。
  • 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 秒收集并发出系统 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 代理的更多信息,请观看以下视频


此页面是否有帮助?

感谢您的反馈!


Flux 的未来

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

阅读更多

InfluxDB 3 开源现已公开发布 Alpha 版

InfluxDB 3 开源现在可用于 alpha 测试,根据 MIT 或 Apache 2 许可获得许可。

我们正在发布两个产品作为 alpha 版本的一部分。

InfluxDB 3 Core 是我们新的开源产品。它是用于时间序列和事件数据的最新数据引擎。InfluxDB 3 Enterprise 是一个商业版本,它建立在 Core 的基础上,增加了历史查询功能、读取副本、高可用性、可扩展性和细粒度的安全性。

有关如何入门的更多信息,请查看