You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Telegraf聚合器插件作用范围限定于指定指标?

解决Telegraf聚合器仅作用于GNMI输入指标的配置方法

直接添加aggregators.derivative配置的话,默认会对所有输入插件采集的所有指标生效,所以必须通过过滤规则限定作用范围。

以下是两种可行的配置方式,按需选择:

方式一:通过字段名精准匹配

如果明确知道GNMI采集的目标字段名(比如if_in_bytes、if_out_bytes),直接用namepass指定这些字段:

# 你的GNMI输入配置(示例)
[[inputs.gnmi]]
  address = "router.example.com:57400"
  username = "admin"
  password = "secret"
  [[inputs.gnmi.subscription]]
    path = "/interfaces/interface/state/counters/in-octets"
    name = "if_in_bytes"
  [[inputs.gnmi.subscription]]
    path = "/interfaces/interface/state/counters/out-octets"
    name = "if_out_bytes"

# 仅对指定字段计算速率的聚合器配置
[[aggregators.derivative]]
  namepass = ["if_in_bytes", "if_out_bytes"]
  unit = "s"  # 速率单位为每秒,输出字段会自动添加"_rate"后缀
  ignore_negative = true  # 忽略计数器回绕产生的负值,可选开启

方式二:通过标签匹配GNMI来源

Telegraf默认会给所有指标添加input标签,值为对应输入插件的名称(比如GNMI插件的input标签值是gnmi),可以利用这个标签过滤:

[[aggregators.derivative]]
  # 仅处理来自GNMI输入插件的指标
  [aggregators.derivative.tagpass]
    input = ["gnmi"]
  unit = "s"
  ignore_negative = true
  # 若需进一步限定字段,可叠加namepass
  namepass = ["if_in_bytes", "if_out_bytes"]

如果你的GNMI指标没有自动生成input标签,也可以手动给GNMI插件添加自定义标签:

[[inputs.gnmi]]
  # 其他原有配置...
  tags = { data_source = "gnmi" }  # 添加自定义标签

然后在聚合器里匹配这个自定义标签:

[aggregators.derivative.tagpass]
  data_source = ["gnmi"]

配置逻辑说明

Telegraf的执行流程是:输入插件采集数据 → 聚合器处理 → 处理器(可选) → 输出插件写入,只要聚合器的过滤规则正确,就只会作用于符合条件的GNMI指标,不会影响其他输入插件的数据。

内容的提问来源于stack exchange,提问作者godot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 17:52:49