Telegraf writing

Telegraf is a viral, open-source, metrics collection software. Telegraf can collect the operation information of various components without having to write any scripts to collect regularly, reducing the difficulty of data acquisition.

Telegraf’s data can be written to TDengine by simply adding the output configuration of Telegraf to the URL corresponding to taosAdapter and modifying several configuration items. The presence of Telegraf data in TDengine can take advantage of TDengine’s efficient storage query performance and clustering capabilities for time-series data.

Prerequisites

To write Telegraf data to TDengine requires the following preparations.

  • The TDengine cluster is deployed and functioning properly
  • taosAdapter is installed and running properly. Please refer to the taosAdapter manual for details.
  • Telegraf has been installed. Please refer to the official documentation for Telegraf installation.
  • Telegraf collects the running status measurements of current system. You can enable input plugins to insert other formats data to Telegraf then forward to TDengine.

Configuration steps

In the Telegraf configuration file (default location /etc/telegraf/telegraf.conf) add an outputs.http section.

  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. ...

Where <taosAdapter’s host> please fill in the server’s domain name or IP address running the taosAdapter service. <REST service port> please fill in the port of the REST service (default is 6041). <TDengine’s username> and <TDengine’s password> please fill in the actual configuration of the currently running TDengine. And <database name> please fill in the database name where you want to store Telegraf data in TDengine.

An example is as follows.

  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"

Verification method

Restart Telegraf service:

  1. sudo systemctl restart telegraf

Use TDengine CLI to verify Telegraf correctly writing data to TDengine and read out:

  1. taos> show databases;
  2. name |
  3. =================================
  4. information_schema |
  5. performance_schema |
  6. telegraf |
  7. Query OK, 3 rows in database (0.010568s)
  8. taos> use telegraf;
  9. Database changed.
  10. taos> show stables;
  11. name |
  12. =================================
  13. swap |
  14. cpu |
  15. system |
  16. diskio |
  17. kernel |
  18. mem |
  19. processes |
  20. disk |
  21. Query OK, 8 row(s) in set (0.000521s)
  22. taos> select * from telegraf.system limit 10;
  23. ts | load1 | load5 | load15 | n_cpus | n_users | uptime | uptime_format | host
  24. |
  25. =============================================================================================================================================================================================================================================
  26. 2022-04-20 08:47:50.000000000 | 0.000000000 | 0.050000000 | 0.070000000 | 4 | 1 | 5533 | 1:32 | shuduo-1804
  27. |
  28. 2022-04-20 08:48:00.000000000 | 0.000000000 | 0.050000000 | 0.070000000 | 4 | 1 | 5543 | 1:32 | shuduo-1804
  29. |
  30. 2022-04-20 08:48:10.000000000 | 0.000000000 | 0.040000000 | 0.070000000 | 4 | 1 | 5553 | 1:32 | shuduo-1804
  31. |
  32. Query OK, 3 row(s) in set (0.013269s)
Telegraf - 图1note
  • TDengine take influxdb format data and create unique ID for table names by the rule. The user can configure smlChildTableName parameter to generate specified table names if he/she needs. And he/she also need to insert data with specified data format. For example, Add smlChildTableName=tname in the taos.cfg file. Insert data st,tname=cpu1,t1=4 c1=3 1626006833639000000 then the table name will be cpu1. If there are multiple lines has same tname but different tag_set, the first line’s tag_set will be used to automatically creating table and ignore other lines. Please refer to TDengine Schemaless