Telegraf 写入
Telegraf 是一款十分流行的指标采集开源软件。在数据采集和平台监控系统中,Telegraf 可以采集多种组件的运行信息,而不需要自己手写脚本定时采集,降低数据获取的难度。
只需要将 Telegraf 的输出配置增加指向 taosAdapter 对应的 url 并修改若干配置项即可将 Telegraf 的数据写入到 TDengine 中。将 Telegraf 的数据存在到 TDengine 中可以充分利用 TDengine 对时序数据的高效存储查询性能和集群处理能力。
前置条件
要将 Telegraf 数据写入 TDengine 需要以下几方面的准备工作。
- TDengine 集群已经部署并正常运行
- taosAdapter 已经安装并正常运行。具体细节请参考 taosAdapter 的使用手册
- Telegraf 已经安装。安装 Telegraf 请参考官方文档
- Telegraf 默认采集系统运行状态数据。通过使能输入插件方式可以输出其他格式的数据到 Telegraf 再写入到 TDengine中。
配置步骤
在 Telegraf 配置文件(默认位置 /etc/telegraf/telegraf.conf) 增加 outputs.http 输出模块配置:
1. [[outputs.http]]
2. url = "http://<taosAdapter's host>:<REST service port>/influxdb/v1/write?db=<database name>"
3. ...
4. username = "<TDengine's username>"
5. password = "<TDengine's password>"
6. ...
其中 <taosAdapter’s host> 请填写运行 taosAdapter 服务的服务器域名或 IP 地址,<REST service port> 请填写 REST 服务的端口(默认为 6041),<TDengine’s username> 和 <TDengine’s password> 请填写当前运行的 TDengine 实际配置,<database name> 请填写希望在 TDengine 保存 Telegraf 数据的数据库名。
示例如下:
1. [[outputs.http]]
2. url = "http://127.0.0.1:6041/influxdb/v1/write?db=telegraf"
3. method = "POST"
4. timeout = "5s"
5. username = "root"
6. password = "taosdata"
7. data_format = "influx"
验证方法
重启 Telegraf 服务:
1. sudo systemctl restart telegraf
使用 TDengine CLI 验证从 Telegraf 向 TDengine 写入数据并能够正确读出:
1. taos> show databases;
2. name |
3. =================================
4. information_schema |
5. performance_schema |
6. telegraf |
7. Query OK, 3 rows in database (0.010568s)
9. taos> use telegraf;
10. Database changed.
12. taos> show stables;
13. name |
14. =================================
15. swap |
16. cpu |
17. system |
18. diskio |
19. kernel |
20. mem |
21. processes |
22. disk |
23. Query OK, 8 row(s) in set (0.000521s)
25. taos> select * from telegraf.system limit 10;
26. ts | load1 | load5 | load15 | n_cpus | n_users | uptime | uptime_format | host
27. |
28. =============================================================================================================================================================================================================================================
29. 2022-04-20 08:47:50.000000000 | 0.000000000 | 0.050000000 | 0.070000000 | 4 | 1 | 5533 | 1:32 | shuduo-1804
30. |
31. 2022-04-20 08:48:00.000000000 | 0.000000000 | 0.050000000 | 0.070000000 | 4 | 1 | 5543 | 1:32 | shuduo-1804
32. |
33. 2022-04-20 08:48:10.000000000 | 0.000000000 | 0.040000000 | 0.070000000 | 4 | 1 | 5553 | 1:32 | shuduo-1804
34. |
35. Query OK, 3 row(s) in set (0.013269s)
Telegraf - 图1note
- TDengine 接收 influxdb 格式数据默认生成的子表名是根据规则生成的唯一 ID 值。 用户如需指定生成的表名,可以通过在 taos.cfg 里配置 smlChildTableName 参数来指定。如果通过控制输入数据格式,即可利用 TDengine 这个功能指定生成的表名。 举例如下:配置 smlChildTableName=tname 插入数据为 st,tname=cpu1,t1=4 c1=3 1626006833639000000 则创建的表名为 cpu1。如果多行数据 tname 相同,但是后面的 tag_set 不同,则使用第一行自动建表时指定的 tag_set,其他的行会忽略)。TDengine 无模式写入参考指南
