Documentation

配置选项

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

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

生成配置文件

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

创建一个带有默认输入和输出插件的配置

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

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

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

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

要生成一个仅包含特定插件设置的配置文件,请使用 --input-filter--output-filter 选项来指定 input pluginsoutput 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_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] 部分包含以下配置选项:

  • 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-15s 发生一次。
  • 精度: 收集的指标会四舍五入到指定的精度作为一个 interval (整数 + 单位,例如: 1ns, 1us, 1ms, 和 1s . 精度不适用于服务输入,例如 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: 如果为真,则不在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的解析方式, tagpasstagdrop 参数必须在插件定义的 末尾 定义,否则后续的插件配置选项将被解释为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_*"]

输入配置: 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"]

输入配置: 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=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秒收集并发出系统负载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 3 开源版本现已公开Alpha测试

InfluxDB 3 Open Source is now available for alpha testing, licensed under MIT or Apache 2 licensing.

我们将发布两个产品作为测试版的一部分。

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

有关如何开始的更多信息,请查看: