Telegraf 扮演什么角色
Telegraf 是插件化的数据采集/转发代理:输入插件负责拿数据(MQTT、Modbus、HTTP 等),输出插件负责写目的地(TDengine、InfluxDB 等)。采集和入库用配置串起来,几乎不用写代码。
整体链路
设备 → Neuron/采集服务 → MQTT(EMQX) → Telegraf(MQTT输入) → Telegraf(TDengine输出) → TDengine
第一步:配置 MQTT 输入
在 telegraf.conf 启用 inputs.mqtt_consumer,指定 broker、主题、数据格式:
[[inputs.mqtt_consumer]]
servers = ["tcp://127.0.0.1:1883"]
topics = ["factory/+/+/+"]
qos = 1
data_format = "json"
主题用 + 通配单层,按前面定好的“厂区/产线/设备/点位”层级订阅。
第二步:配置 TDengine 输出
启用 outputs.tdengine(较新版本内置),指定 DSN、数据库和是否自动建表:
[[outputs.tdengine]]
dsn = "root:taosdata@tcp(127.0.0.1:6030)/"
database = "factory"
skip_database_creation = false
第三步:数据格式对齐
Telegraf 内部用 metric 模型(measurement + tags + fields + timestamp)。要让设备、产线作为标签(tag,可索引、用于分组),温度压力等作为字段(field,实际数值)。若上游 JSON 结构不标准,可用 inputs 侧的解析或用 processor 做字段重命名。
第四步:前台调试
telegraf --config telegraf.conf --test # 只跑一次看输出
telegraf --config telegraf.conf # 正式运行
—test 能快速验证“输入是否解析成功、字段是否齐全”,不用真写库,是排错利器。
第五步:验证入库
USE factory;
SHOW STABLES;
SELECT * FROM 子表名 LIMIT 10;
生产化建议
- 用 systemd 托管 Telegraf 并设开机自启
- 采集和 TDengine 分进程/分机部署,互不影响
- 给 MQTT 建独立账号,最小权限
- 配合 Grafana 直接查 TDengine,形成“采集—存储—展示”闭环
这套方式几乎全配置化,新增设备只需加主题和点位,非常适合长期迭代。