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

Telegraf inputs.mqtt_consumer订阅MQTT时无法正确解析JSON数据

问题原因

你配置失效的核心原因是搞错了topic_parsing的作用边界:

  • topic_parsing模块只负责拆分MQTT的主题路径,不会解析JSON消息体内的字段
  • 你当前的消息都发布在test主题下,主题路径本身没有air/humidity/region/temperature/time的多层结构,你写的拆分规则完全匹配不到实际主题,根本不会执行
  • 你需要提取的region字段是存在JSON消息负载里的,靠拆主题路径本来就拿不到。
解决方法

删掉配置错误的topic_parsing块,直接通过JSON解析器的配置指定要提取为标签的字段即可,完全符合你不能使用指定禁用配置的约束,修正后的配置如下:

[[inputs.mqtt_consumer]]
  servers = ["tcp://127.0.0.1:1883"]
  topics = [
        "test/#"
  ]
  data_format = "json"
  # 指定JSON中需要提取为标签的字段
  json_tag_keys = ["region"]
  # 指定JSON中需要提取为指标字段的字段,不需要的字段可以不写
  json_field_keys = ["temperature", "humidity"]

配置生效后,写入InfluxDB的数据就会自动携带region标签,和你预期的输出效果完全一致。

补充说明:如果后续你需要使用topic_parsing拆分主题路径,必须保证配置里的topic匹配模式和实际MQTT消息的主题层级完全对应,不能把JSON消息体里的字段名写到主题匹配规则里,否则规则不会生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 03:51:23