Telegraf 写入

Telegraf 是一款十分流行的指标采集开源软件。在数据采集和平台监控系统中,Telegraf 可以采集多种组件的运行信息,而不需要自己手写脚本定时采集,降低数据获取的难度。

只需要将 Telegraf 的输出配置增加指向 taosAdapter 对应的 url 并修改若干配置项即可将 Telegraf 的数据写入到 TDengine 中。将 Telegraf 的数据存在到 TDengine 中可以充分利用 TDengine 对时序数据的高效存储查询性能和集群处理能力。

前置条件

要将 Telegraf 数据写入 TDengine 需要以下几方面的准备工作。

  • TDengine 集群已经部署并正常运行
  • taosAdapter 已经安装并正常运行。具体细节请参考 taosAdapter 的使用手册
  • Telegraf 已经安装。安装 Telegraf 请参考官方文档

配置步骤

在 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 | created_time | ntables | vgroups | replica | quorum | days | keep | cache(MB) | blocks | minrows | maxrows | wallevel | fsync | comp | cachelast | precision | update | status |
  3. ====================================================================================================================================================================================================================================================================================
  4. telegraf | 2022-04-20 08:47:53.488 | 22 | 1 | 1 | 1 | 10 | 3650 | 16 | 6 | 100 | 4096 | 1 | 3000 | 2 | 0 | ns | 2 | ready |
  5. log | 2022-04-20 07:19:50.260 | 9 | 1 | 1 | 1 | 10 | 3650 | 16 | 6 | 100 | 4096 | 1 | 3000 | 2 | 0 | ms | 0 | ready |
  6. Query OK, 2 row(s) in set (0.002401s)
  7. taos> use telegraf;
  8. Database changed.
  9. taos> show stables;
  10. name | created_time | columns | tags | tables |
  11. ============================================================================================
  12. swap | 2022-04-20 08:47:53.532 | 7 | 1 | 1 |
  13. cpu | 2022-04-20 08:48:03.488 | 11 | 2 | 5 |
  14. system | 2022-04-20 08:47:53.512 | 8 | 1 | 1 |
  15. diskio | 2022-04-20 08:47:53.550 | 12 | 2 | 15 |
  16. kernel | 2022-04-20 08:47:53.503 | 6 | 1 | 1 |
  17. mem | 2022-04-20 08:47:53.521 | 35 | 1 | 1 |
  18. processes | 2022-04-20 08:47:53.555 | 12 | 1 | 1 |
  19. disk | 2022-04-20 08:47:53.541 | 8 | 5 | 2 |
  20. Query OK, 8 row(s) in set (0.000521s)
  21. taos> select * from telegraf.system limit 10;
  22. ts | load1 | load5 | load15 | n_cpus | n_users | uptime | uptime_format | host
  23. |
  24. =============================================================================================================================================================================================================================================
  25. 2022-04-20 08:47:50.000000000 | 0.000000000 | 0.050000000 | 0.070000000 | 4 | 1 | 5533 | 1:32 | shuduo-1804
  26. |
  27. 2022-04-20 08:48:00.000000000 | 0.000000000 | 0.050000000 | 0.070000000 | 4 | 1 | 5543 | 1:32 | shuduo-1804
  28. |
  29. 2022-04-20 08:48:10.000000000 | 0.000000000 | 0.040000000 | 0.070000000 | 4 | 1 | 5553 | 1:32 | shuduo-1804
  30. |
  31. Query OK, 3 row(s) in set (0.013269s)