telegraf部署学习

Telegraf 是一款由开源公司 InfluxData 开发的代理程序,它是现代监控系统“TICK Stack”或“Telegraf Stack”的核心数据收集组件。它的主要功能是从各种来源(如操作系统、数据库、硬件传感器、消息队列等)采集指标和数据,然后将其汇聚并写入到多种目的地(最常用的是时序数据库 InfluxDB)。Telegraf 以其插件化的架构、低资源消耗和强大的集成能力而闻名,是 DevOps 和系统管理员进行指标监控和性能分析的首选工具之一。

telegraf部署监控本机信息并持久化到influxdb

1
docker pull telegraf

准备 telegraf.conf

docker run –rm telegraf telegraf config > telegraf.conf

修改 telegraf.conf

1
2
3
4
5
[[outputs.influxdb]]
urls = ["http://192.168.72.128:8086"]
database = "telegraf"
username = "admin"
password = "pass"

起容器

1
2
3
4
5
6
7
8
9
10
11
12
docker run -d \
--name=telegraf \
--hostname=telegraf \
-v $(pwd)/telegraf.conf:/etc/telegraf/telegraf.conf:ro \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-e HOST_PROC=/host/proc \
-e HOST_SYS=/host/sys \
-e HOST_ETC=/host/etc \
-v /proc:/host/proc:ro \
-v /sys:/host/sys:ro \
-v /etc:/host/etc:ro \
telegraf

检查influxdb

我这里部署的influxdb在同一台主机,方式也是容器化部署

1
2
3
4
docker exec -it inflxudb bash
influx -username admin -password pass
USE telegraf;
SELECT * FROM mqtt_consumer LIMIT 10;

image-20250917163754851

telegraf部署监控mqtt主题并持久化到influxdb

修改之前的 telegraf.conf

里面有很多设置(默认是被注释的),只需修改以下内容即可。

1
2
3
4
5
6
7
8
[[inputs.mqtt_consumer]]
servers = ["tcp://192.168.72.128:1883"]
topics = ["telegraf/test"]
qos = 0
client_id = "telegraf"
username = "admin"
password = "admin"
data_format = "json"

重启容器后进行测试

登录之前的mqtt容器

使用docker exec -it mosquitto sh进入容器内命令行工具。之后执行以下命令。

1
mosquitto_pub -h 127.0.0.1 -p 1883 -u admin -P admin -t telegraf/test -m '{"temperature":25,"humidity":60}'

然后检查telegraf的日志以及influxdb数据库。

1
docker logs telegraf

image-20250917165357738

这些报错是我之前的输入的json不合法的原因。后来发了几条不再出现新的信息说明没什么问题了。

我这里部署的influxdb在同一台主机,方式也是容器化部署

1
2
3
4
5
docker exec -it inflxudb bash
influx -username admin -password pass
USE telegraf;
SHOW DATABASES;
SHOW MEASUREMENTS;

image-20250917165612333

可以发现多出来了一个mqtt_sonsumer ,进去看看数据情况。数据正常写入。至此结束。

可以基于此实现更多自己的想法了。

image-20250917165809620