Telegraf 0.10.0 版本发布

导航至

今天,我们正式发布 Telegraf 0.10.0。展望未来,同一主要版本下的所有 InfluxData 产品都将保证彼此兼容,因此 Telegraf 将向前跳跃到 0.10.x,以与即将发布的 0.10.0 InfluxDB 版本(1 月下旬)保持一致。

0.10.0 版本带来了一系列新的更改和改进,其中许多是重大更改。我们进行重大版本发布有几个原因,我将在下面介绍。有关从 Telegraf 0.2.x 迁移到 0.10.0 的指南,请参阅此博文末尾。

字段而非度量

Telegraf 之前几乎将收集到的每个指标都放入一个度量中,其中只有一个名为 value 的字段,例如,cpu_usage_idle value=100cpu_usage_guest value=0。展望未来,Telegraf(在大多数情况下)会将所有插件放入一个度量中,每个指标都有一个字段,例如,cpu usage_guest=0,usage_idle=100。这有很多好处,其中之一是用户可以轻松地对插件内不同指标之间的关系进行数学查询。例如,使用内存插件,您可以像这样计算缓冲内存占总内存的百分比

SELECT buffered/total FROM mem 另一个显著的好处是,这将减少每个 Telegraf 实例生成的网络流量。其原因主要是时间戳和标签现在每个插件只发送一次,而不是每个度量发送一次。您看到的减少量将取决于您使用的插件,但大多数用户可以预期网络流量至少减少 50%。

重命名插件 -> 输入

Telegraf 最初是作为一种代理而开始的,用于从插件收集指标并将它们写入 InfluxDB。自然地,输入插件简称为“插件”。然而,Telegraf 已经超越了这个名称,因为我们现在除了“输入插件”之外还有“输出插件”。未来还计划拥有“聚合器插件”和“过滤器插件”之类的东西。出于这个原因,我们将“插件”重命名为“输入”,并重组它们在存储库中出现的位置。输入和输出现在都在根存储库的 plugins/ 目录下。这也意味着每个输入的配置已从 [[plugins.cpu]] 更改为 [[inputs.cpu]]

输入配置

对于 0.10.0,有一些新的输入配置选项

  • name_override:覆盖度量的基本名称。(默认为插件的名称)。
  • name_prefix:指定要附加到度量名称的前缀。
  • name_suffix:指定要附加到度量名称的后缀。
  • tags:应用于特定输入度量的标签映射。

示例

此插件将发出名称为 cpu_total 而不是仅为 cpu 的度量

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

这将发出名称为 foobar 而不是 cpu 的度量

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

此插件将发出带有两个附加标签的度量:tag1=footag2=bar

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

插件并行化

在过去的 9 个月里,Telegraf 添加了许多新功能,其中一些功能实际上并不适合 Telegraf 的结构和组织方式。随着时间的推移,我们越来越清楚地认识到,我们需要为同一插件的多个实例运行创建一个途径。

许多贡献者通过设置内部配置列表和线程来解决这个问题。以 exec 插件为例,它最初是这样配置的

# telegraf.conf

[inputs.exec]
  # specify commands via an array of tables
  [[inputs.exec.commands]]
    # the command to run
    command = "/usr/bin/mycollector --foo=bar"
    # name of the command (used as a prefix for measurements)
    name = "mycollector"
    # Only run this command if it has been at least this many
    # seconds since it last ran
    interval = 10

  [[inputs.exec.commands]]
    command = "/usr/bin/othercollector"
    name = "othercollector"
    interval = 15

这是一个很好的解决方案,它允许 exec 插件的用户指定要执行的多个二进制文件。但这里也存在一些问题。由于每个 exec.command 都在插件内定义,因此它无法访问 Telegraf 的通用插件配置选项。您在上面看到的 interval 参数是特定于 exec 插件的自定义实现。另一个问题是,它要求插件编写者在内部处理线程和错误,而该功能已内置到 Telegraf 代理中。

因此,展望未来,这种内部线程处理已在很大程度上从使用它的输入中移除。相反,用户现在可以将输入定义为列表,从而允许将上述配置更改为如下所示

# telegraf.conf

[[inputs.exec]]
  # the command to run
  command = "/usr/bin/mycollector --foo=bar"
  # name_prefix is a new parameter in 0.10.0 available to all inputs
  name_prefix = "mycollector_"
  # This is the general interval parameter available to all inputs.
  interval = "10s"

[[inputs.exec]]
  command = "/usr/bin/othercollector"
  name_prefix = "othercollector_"
  interval = "15s"

不幸的是,这也意味着这些输入的用户需要重写其配置才能与 Telegraf 0.10.0 配合使用。使用 telegraf -sample-config 查看特定输入的新配置示例。

以下输入受此更改影响

  • exec
  • httpjson
  • jolokia
  • postgresql
  • procstat
  • rabbitmq
  • twemproxy

Linux 软件包移出 `/opt`

应大众需求,我们正在放弃为 Telegraf 使用 opt 目录(就像我们已经对 InfluxDB 和 Kapacitor 所做的那样)。

以下是 Linux 软件包更改的摘要

  • 二进制文件现在位于 `/usr/bin/`
  • 配置现在位于 `/etc/telegraf`
  • init.sh 脚本进行了一些修复和更新
  • telegraf.service 单元文件进行小幅更新,以更正变量的使用
  • 添加了 post-install.shpre-install.sh 来处理升级和其他内务处理

从 Telegraf 0.2.x 迁移

配置文件

如果您当前正在使用 Telegraf 0.2.x,则应首先安装 0.10.0 版本并生成新的配置文件

$ telegraf -sample-config > /tmp/test.0.10.0.conf

在您选择的编辑器中打开该文件,找到您希望配置的插件。检查旧配置和新配置之间的差异,并将新配置与您的配置合并。确保将 plugin 重命名为 input。大多数插件将具有相同的配置选项,但有些插件的配置选项差异很大。以下插件的配置差异很大。

  • exec
  • httpjson
  • jolokia
  • postgresql
  • procstat
  • rabbitmq
  • twemproxy

如果您需要有关配置这些插件的其他帮助,请参阅上面的插件并行化部分,并参阅 changelog

字段而非度量

当您开始使用 Telegraf 0.10.0 时,您会注意到以前的度量将不再获得新的指标。这是因为几乎所有插件都已更改为将指标报告为单个度量上的多个字段。

为了了解这种变化,请尝试在两个版本中以测试模式运行 telegraf

# Telegraf 0.2.x
$ telegraf -config /etc/opt/telegraf/telegraf.conf -test
# Telegraf 0.10.0
$ telegraf -config /etc/telegraf/telegraf.conf -test

并比较输出,您应该会看到度量较少,但字段更多。例如,mem 插件过去将所有指标报告为它们自己的度量(例如,mem_freemem_usedmem_buffered)。因此,从 influxdb 查询缓冲内存将如下所示

# Telegraf 0.2.x
SELECT value FROM mem_buffered

从 Telegraf 0.10.0 开始,该插件将报告一个名为 mem 的度量,每个指标都有相应的字段。因此,现在从 influxdb 查询缓冲内存将如下所示

# Telegraf 0.10.0
SELECT buffered FROM mem

您将需要在 InfluxDB instrumentation 和客户端中更改这些查询。有关字段、度量和标签之间差异的更多信息,请参阅 文档

其他更改

查看 changelog 以了解所做的所有更改的详细信息。