Telegraf无法在MQTT协议中正确读取JSON数据

发布于 2025-02-08 04:16:14 字数 2122 浏览 3 评论 0 原文

当我使用telegraf inputs.mqtt_consumer 在订阅MQTT时无法正确解析数据时,

  1. 从客户端读取的原始数据:
{
  "air": "air",
  "humidity": 35,
  "region": "shanghai",
  "temperature": 34,
  "time": 1655371268
}
  1. 这是Telegraf的配置
[[inputs.mqtt_consumer]]
  servers = ["tcp://127.0.0.1:1883"]
  topics = [
        "test/#"
  ]
  data_format = "json"
  [[inputs.mqtt_consumer.topic_parsing]]
    topic = "air/humidity/region/temperature/time"
    measurement = "measurement/_/_/_/_"
    tags = "_/_/region/_/_"
    fields = "_/_/_/temperature/_"
  1. 这是我使用EMQX 就像这样,
> select * from mqtt_consumer
name: mqtt_consumer
time                           humidity temperature topic
----                           -------- ----------- -----
2022-06-16T09:28:45.663600586Z  41       41          test
2022-06-16T09:28:45.764128509Z  38       48          test
2022-06-16T09:28:46.664330569Z  43       47          test
2022-06-16T09:28:46.764848563Z. 41       34          test
2022-06-16T09:28:47.665094746Z. 49       50          test
2022-06-16T09:28:47.765611758Z. 5       50          test
2022-06-16T09:28:48.66629661Z   42       32          test
  1. 我希望数据像这样,
name: mqtt_consumer
time                           region   temperature topic
----                           ----     ----------- -----
2022-06-16T09:28:45.663600586Z shanghai 41          test
2022-06-16T09:28:45.764128509Z shanghai 48          test
2022-06-16T09:28:46.664330569Z shanghai 47          test
2022-06-16T09:28:46.764848563Z shanghai 34          test
2022-06-16T09:28:47.665094746Z shanghai 50          test
2022-06-16T09:28:47.765611758Z shanghai 50          test
2022-06-16T09:28:48.66629661Z  shanghai 32          test
  1. Telegraf的配置不能更改为
  [[inputs.mqtt_consumer.topic_parsing]]
    topic = "air/humidity/region/temperature/time"
    measurement = "measurement/_/_/_/_"
    tags = "_/_/tag/_/_"
    fields = "_/_/_/field/_"

When I use telegraf inputs.mqtt_consumer cannot parse the data correctly when subscribing to mqtt

  1. This is the raw data I read from the client using emqx:
{
  "air": "air",
  "humidity": 35,
  "region": "shanghai",
  "temperature": 34,
  "time": 1655371268
}
  1. This is the configuration of telegraf
[[inputs.mqtt_consumer]]
  servers = ["tcp://127.0.0.1:1883"]
  topics = [
        "test/#"
  ]
  data_format = "json"
  [[inputs.mqtt_consumer.topic_parsing]]
    topic = "air/humidity/region/temperature/time"
    measurement = "measurement/_/_/_/_"
    tags = "_/_/region/_/_"
    fields = "_/_/_/temperature/_"
  1. But the data I got in the incluxdb is like this
> select * from mqtt_consumer
name: mqtt_consumer
time                           humidity temperature topic
----                           -------- ----------- -----
2022-06-16T09:28:45.663600586Z  41       41          test
2022-06-16T09:28:45.764128509Z  38       48          test
2022-06-16T09:28:46.664330569Z  43       47          test
2022-06-16T09:28:46.764848563Z. 41       34          test
2022-06-16T09:28:47.665094746Z. 49       50          test
2022-06-16T09:28:47.765611758Z. 5       50          test
2022-06-16T09:28:48.66629661Z   42       32          test
  1. I expect the data to be like this
name: mqtt_consumer
time                           region   temperature topic
----                           ----     ----------- -----
2022-06-16T09:28:45.663600586Z shanghai 41          test
2022-06-16T09:28:45.764128509Z shanghai 48          test
2022-06-16T09:28:46.664330569Z shanghai 47          test
2022-06-16T09:28:46.764848563Z shanghai 34          test
2022-06-16T09:28:47.665094746Z shanghai 50          test
2022-06-16T09:28:47.765611758Z shanghai 50          test
2022-06-16T09:28:48.66629661Z  shanghai 32          test
  1. The configuration of telegraf cannot be changed to this
  [[inputs.mqtt_consumer.topic_parsing]]
    topic = "air/humidity/region/temperature/time"
    measurement = "measurement/_/_/_/_"
    tags = "_/_/tag/_/_"
    fields = "_/_/_/field/_"

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

瀟灑尐姊 2025-02-15 04:16:15
[[inputs.mqtt_consumer]]
data_format = "json"
tag_keys = [
    "region"
]

请参阅doc

[[inputs.mqtt_consumer]]
data_format = "json"
tag_keys = [
    "region"
]

see doc https://docs.influxdata.com/telegraf/v1.22/data_formats/input/json/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文