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

Telegraf未处理MQTT数据问题排查求助

问题:MQTT数据无法写入InfluxDB(InfluxDB/Telegraf/Mosquitto环境)

已搭建InfluxDB / Telegraf / Mosquitto环境,MQTT消息可正常发布,但MQTT生成的数据无法写入InfluxDB。其他Telegraf输入插件(如cpu、disk)可正常写入数据库,说明数据库配置本身无问题。

Telegraf的MQTT Consumer配置

[[inputs.mqtt_consumer]]
  ## Broker URLs for the MQTT server or cluster.  To connect to multiple
  ## clusters or standalone servers, use a separate plugin instance.
  ##   example: servers = ["tcp://localhost:1883"]
  ##            servers = ["ssl://localhost:1883"]
  ##            servers = ["ws://localhost:1883"]
  servers = ["tcp://192.168.x.x1883"]
  username = "xx"
  password = "xx"


  ## Topics that will be subscribed to.
  topics = [
    "Bosch/#"
  ]
]

相关日志信息

Telegraf连接日志

[inputs.mqtt_consumer] Connected [tcp://192.168.x.x:1883]

Mosquitto调试日志

8110927: Sending PUBLISH to Telegraf-Consumer-M0uQg (d0, q0, r0, m0, 'Bosch/CAM137/onvif-ej/RuleEngine/CountAggregation/Counter/&1/xx', ... (116 bytes))
1688110972: Received PINGREQ from Telegraf-Consumer-M0uQg
1688110972: Sending PINGRESP to Telegraf-Consumer-M0uQg
1688111032: Received PINGREQ from Telegraf-Consumer-M0uQg
1688111032: Sending PINGRESP to Telegraf-Consumer-M0uQg

Telegraf输出缓冲区日志

2023-06-30T07:43:02Z D! [outputs.influxdb_v2] Buffer fullness: 0 / 10000 metrics
2023-06-30T07:43:12Z D! [outputs.influxdb_v2] Buffer fullness: 0 / 10000 metrics
2023-06-30T07:43:12Z D! [outputs.file] Buffer fullness: 0 / 10000 metrics
2023-06-30T07:43:22Z D! [outputs.influxdb_v2] Buffer fullness: 0 / 10000 metrics
2023-06-30T07:43:22Z D! [outputs.file] Buffer fullness: 0 / 10000 metrics
2023-06-30T07:43:32Z D! [outputs.influxdb_v2] Buffer fullness: 0 / 10000 metrics
2023-06-30T07:43:32Z D! [outputs.file] Buffer fullness: 0 / 10000 metrics
2023-06-30T07:43:42Z D! [outputs.influxdb_v2] Buffer fullness: 0 / 10000 metrics
2023-06-30T07:43:42Z D! [outputs.file] Buffer fullness: 0 / 10000 metrics
2023-06-30T07:43:52Z D! [outputs.influxdb_v2] Buffer fullness: 0 / 10000 metrics
2023-06-30T07:43:52Z D! [outputs.file] Buffer fullness: 0 / 10000 metrics

排查与解决步骤

  • 修复MQTT服务器地址语法错误:配置中的servers = ["tcp://192.168.x.x1883"]缺少端口分隔符冒号,应改为servers = ["tcp://192.168.x.x:1883"]。虽然日志显示连接成功,但地址格式错误可能导致订阅逻辑异常。
  • 指定MQTT消息的Data Format:Telegraf的mqtt_consumer默认仅解析InfluxDB Line Protocol格式的payload。如果你的MQTT消息是JSON或其他格式,必须在配置中添加对应的数据格式声明,例如:
    [[inputs.mqtt_consumer]]
      # 其他配置...
      data_format = "json"  # 如果payload是JSON格式
      # 若需提取字段或标签,可额外配置json_tag_keys、json_string_fields等参数
    
  • 启用Telegraf详细调试日志:启动Telegraf时添加--debug参数,查看是否有payload解析失败的日志信息。例如:
    telegraf --config /etc/telegraf/telegraf.conf --debug
    
    若存在解析错误,日志会明确提示[inputs.mqtt_consumer] Error parsing payload及具体原因。
  • 验证MQTT消息内容:使用mosquitto_sub工具订阅对应主题,确认payload的格式和内容是否符合Telegraf的解析要求:
    mosquitto_sub -h 192.168.x.x -p 1883 -u "xx" -P "xx" -t "Bosch/#"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 13:53:20