使用聚合器和处理器插件转换数据
除了输入插件和输出插件,Telegraf还包括聚合器和处理器插件,这些插件用于在指标通过Telegraf时进行聚合和处理。
- transform
- decorate
- filter] Aggregate[Aggregate
- transform
- decorate
- filter] CPU --> Process Memory --> Process MySQL --> Process SNMP --> Process Docker --> Process Process --> Aggregate Aggregate --> InfluxDB Aggregate --> File Aggregate --> Kafka style Process text-align:left style Aggregate text-align:left
处理器插件 在指标传递过程中处理它们,并立即根据处理的值发出结果。例如,这可以是打印所有指标或向所有通过的指标添加标签。有关处理器插件的列表及其详细配置选项的链接,请参见 处理器插件。
聚合器插件,另一方面,稍微复杂一些。聚合器通常用于发出新的 聚合 指标,比如运行平均值、最小值、最大值、分位数或标准差。出于这个原因,所有 聚合器 插件都配置了一个 period。period 是每个 聚合 代表的指标窗口的大小。换句话说,发出的 聚合 指标将是过去 period 秒的聚合值。由于许多用户只关心他们的聚合,而不是收集的每一个指标,因此还有一个 drop_original 参数,它告诉 Telegraf 只发出聚合,而不发出原始指标。有关聚合器插件的列表及其详细配置选项的链接,请参见 聚合器插件。
处理器和聚合器一起使用时的行为
在Telegraf v1.17中同时使用聚合器和处理器插件时,处理器插件 处理数据,然后将其传递给聚合器插件。 在聚合器插件聚合数据后,它们将其传回处理器插件。 这可能会产生意想不到的后果,例如执行数学运算两次。 参见 influxdata/telegraf#7993。
如果使用自定义处理脚本,它们必须是幂等的(可重复的,没有副作用)。 对于那些不是幂等的自定义过程,请使用 namepass or namedrop 来避免在第二次处理聚合数据时出现问题。