Telegraf(MQTT消息采集)
- 安装 telegraf
wget https://dl.influxdata.com/telegraf/releases/telegraf-1.7.4-1.x86_64.rpm
yum localinstall telegraf-1.30.0-1.x86_64.rpm
- 配置
vim /etc/telegraf/telegraf.conf
找到Prometheus配置
改成如下:
# # Configuration for the Prometheus client to spawn
[[outputs.prometheus_client]]
# ## Address to listen on
listen = ":9273"
path = "/metrics"
expiration_interval = "60s"
string_as_label = true
然后找到inputs.mqtt_consumer,修改采集的配置和根据自己的消息格式调整json_v2的内容,参考例子如下:
[[inputs.mqtt_consumer]]
servers = ["tcp://10.2.209.102:1883"] ##emqx地址
qos = 1
connection_timeout = "30s"
topics = ["sixin/zx/2945/erjidi/yiqu"] ##主题
username = "test_client" ##用户名
password = "sqemqx123." ##密码
client_id = "telegraf_fjc_debug_v2" ##client_id
data_format = "json_v2"
max_undelivered_messages = 100
##下面的部分需要根据自己的mqtt消息格式调整,可以通过AI生成
[[inputs.mqtt_consumer.json_v2]]
[[inputs.mqtt_consumer.json_v2.field]]
path = "did"
type = "string"
optional = true
[[inputs.mqtt_consumer.json_v2.field]]
path = "utime"
type = "string"
optional = true
[[inputs.mqtt_consumer.json_v2.object]]
path = "content"
tags = ["addr", "pid", "type"]
[inputs.mqtt_consumer.json_v2.object.fields]
addrv = "float"
[inputs.mqtt_consumer.json_v2.object.tagpass]
# 可选:过滤特定 addr
# addr = ["data1", "data2"]
我的mqtt消息格式为
{"did":"FJC290231353","utime":"2026/05/06 13:28:28","content":[{"pid":"1","type":"0","addr":"data1","addrv":"3","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data2","addrv":"0","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data3","addrv":"0","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data4","addrv":"32","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data5","addrv":"0","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data6","addrv":"0","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data7","addrv":"0","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data8","addrv":"0","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data9","addrv":"0","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data10","addrv":"0","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data11","addrv":"2026","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data12","addrv":"5","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data13","addrv":"6","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data14","addrv":"13","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data15","addrv":"24","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data16","addrv":"30","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data17","addrv":"4","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data18","addrv":"2754","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data19","addrv":"2026","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data20","addrv":"5","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data21","addrv":"6","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data22","addrv":"11","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data23","addrv":"59","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data24","addrv":"47","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data25","addrv":"2008","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data26","addrv":"1","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data27","addrv":"5","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data28","addrv":"41","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data29","addrv":"35","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data30","addrv":"1","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data31","addrv":"2","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data32","addrv":"15","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data33","addrv":"34","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data34","addrv":"1","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data35","addrv":"0","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data36","addrv":"53","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data37","addrv":"19","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data38","addrv":"1","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data39","addrv":"5","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data40","addrv":"15","ctime":"2026/05/06 13:28:27"},{"pid":"1","type":"0","addr":"data41","addrv":"13","ctime":"2026/05/06 13:28:27"}]}
- 启动并验证
systemctl enable telegraf
systemctl start telegraf
systemctl status telegraf
Prometheus抓取
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
# 已有的 job...
# 新增:抓取 Telegraf 的指标
- job_name: 'telegraf-mqtt'
static_configs:
- targets: ['10.2.209.147:9273'] #Telegraf 所在 IP 和端口
metrics_path: '/metrics'
scrape_interval: 15s