Telegraf数据采集:如何为输入插件指定特定采集字段
Telegraf 仅采集输入插件指定字段的配置方法
Telegraf 原生支持字段级别的采集过滤,不需要修改插件源码,针对你的CPU指标采集需求,有两种常用配置方式:
方法1:在CPU输入插件内直接配置字段白名单(推荐,作用范围仅限当前输入)
所有Telegraf输入插件都内置了fieldpass(字段白名单)、fielddrop(字段黑名单)过滤参数,直接写在[[inputs.cpu]]配置块内即可,不会影响其他输入插件的采集逻辑。
你要采集的按CPU ID区分的CPU-busy指标,对应插件内置的usage_active字段(即CPU非空闲状态的总占比),修改配置如下即可:
[[inputs.cpu]] percpu = true # 设为true会按单个CPU核心输出指标,自动带cpu=cpuX的ID标签 totalcpu = false # 不需要整机总CPU指标就设为false collect_cpu_time = false report_active = true # 开启后才会输出usage_active(CPU繁忙占比)字段 core_tags = false # 字段白名单:只有写在这个列表里的字段才会被保留 fieldpass = ["usage_active"]
如果只需要指定某几个CPU核心的指标,不需要采集全部核心,可以额外加标签过滤规则:
# 仅采集cpu0、cpu1两个核心的指标,按需修改ID列表即可 [inputs.cpu.tagpass] cpu = ["cpu0", "cpu1"]
方法2:用prune处理器做更灵活的字段裁剪
如果需要跨多个输入插件统一做字段过滤,或者要同时过滤标签、指标名,可以用processors.prune处理器。
比如单独裁剪CPU输入的字段,保留核心ID标签,配置如下:
# 先保留原有[[inputs.cpu]]的基础配置,不需要在输入块里写fieldpass [[inputs.cpu]] percpu = true totalcpu = false collect_cpu_time = false report_active = true core_tags = false # 新增prune处理器段做字段过滤 [[processors.prune]] namepass = ["cpu"] # 仅对名为cpu的指标生效 fieldinclude = ["usage_active"] # 保留的字段列表 taginclude = ["cpu", "host"] # 保留的标签列表,这里留了CPU核心ID和主机名标签
配置验证方法
改完配置后不要直接启动服务,先执行测试命令看输出是否符合预期:
telegraf --config telegraf.conf --once --test
命令会直接把采集到的指标打印在终端,不会写入下游存储,确认字段、标签都对了再正式启动服务即可。
注意事项
fieldpass为白名单模式,优先级高于黑名单配置fielddrop,两者同时配置时只有匹配白名单的字段会被保留。- 若你需要的CPU-busy指标是自定义计算值(而非内置的
usage_active),可以搭配processors.starlark处理器做自定义计算后再裁剪多余字段,常规场景下内置的usage_active已经可以满足CPU繁忙占比的统计需求。
内容的提问来源于stack exchange,提问作者Vinny Pem
相关产品推荐
相关产品推荐

