StatsD 直接写入

StatsD 是汇总和总结应用指标的一个简单的守护进程,近些年来发展迅速,已经变成了一个用于收集应用性能指标的统一的协议。

只需要在 StatsD 的配置文件中填写运行 taosAdapter 的服务器域名(或 IP 地址)和相应端口即可将 StatsD 的数据写入到 TDengine 中,可以充分利用 TDengine 对时序数据的高效存储查询性能和集群处理能力。

前置条件

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

配置步骤

配置 taosAdapter

配置 taosAdapter 接收 StatsD 数据的方法:

  • 在 taosAdapter 配置文件(默认位置 /etc/taos/taosadapter.toml)中使能配置项
  1. ...
  2. [statsd]
  3. enable = true
  4. port = 6044
  5. db = "statsd"
  6. user = "root"
  7. password = "taosdata"
  8. worker = 10
  9. gatherInterval = "5s"
  10. protocol = "udp"
  11. maxTCPConnections = 250
  12. tcpKeepAlive = false
  13. allowPendingMessages = 50000
  14. deleteCounters = true
  15. deleteGauges = true
  16. deleteSets = true
  17. deleteTimings = true
  18. ...

其中 taosAdapter 默认写入的数据库名称为 statsd,也可以修改 taosAdapter 配置文件 db 项来指定不同的名称。user 和 password 填写实际 TDengine 配置的值。修改过配置文件 taosAdapter 需重新启动。

  • 也可以使用 taosAdapter 命令行参数或设置环境变量启动的方式,使能 taosAdapter 接收 StatsD 数据功能,具体细节请参考 taosAdapter 的使用手册

配置 StatsD

使用 StatsD 需要下载其源代码。其配置文件请参考其源代码下载到本地的根目录下的示例文件 exampleConfig.js 进行修改。其中 <taosAdpater’s host> 填写运行 taosAdapter 的服务器域名或 IP 地址,<port for StatsD>请填写 taosAdapter 接收 StatsD 数据的端口(默认为 6044)。

  1. backends 部分添加 "./backends/repeater"
  2. repeater 部分添加 { host:'<taosAdapter's host>', port: <port for StatsD>}

示例配置文件:

  1. {
  2. port: 8125
  3. , backends: ["./backends/repeater"]
  4. , repeater: [{ host: '127.0.0.1', port: 6044}]
  5. }

增加如下内容后启动 StatsD(假设配置文件修改为 config.js)。

  1. node stats.js config.js &

验证方法

运行 StatsD:

  1. $ node stats.js config.js &
  2. [1] 8546
  3. $ 20 Apr 09:54:41 - [8546] reading config file: exampleConfig.js
  4. 20 Apr 09:54:41 - server is up INFO

使用 nc 写入测试数据:

  1. $ echo "foo:1|c" | nc -u -w0 127.0.0.1 8125

使用 TDengine CLI 验证从 StatsD 向 TDengine 写入数据并能够正确读出:

  1. Welcome to the TDengine shell from Linux, Client Version:2.4.0.0
  2. Copyright (c) 2020 by TAOS Data, Inc. All rights reserved.
  3. taos> show databases;
  4. name | created_time | ntables | vgroups | replica | quorum | days | keep | cache(MB) | blocks | minrows | maxrows | wallevel | fsync | comp | cachelast | precision | update | status |
  5. ====================================================================================================================================================================================================================================================================================
  6. log | 2022-04-20 07:19:50.260 | 11 | 1 | 1 | 1 | 10 | 3650 | 16 | 6 | 100 | 4096 | 1 | 3000 | 2 | 0 | ms | 0 | ready |
  7. statsd | 2022-04-20 09:54:51.220 | 1 | 1 | 1 | 1 | 10 | 3650 | 16 | 6 | 100 | 4096 | 1 | 3000 | 2 | 0 | ns | 2 | ready |
  8. Query OK, 2 row(s) in set (0.003142s)
  9. taos> use statsd;
  10. Database changed.
  11. taos> show stables;
  12. name | created_time | columns | tags | tables |
  13. ============================================================================================
  14. foo | 2022-04-20 09:54:51.234 | 2 | 1 | 1 |
  15. Query OK, 1 row(s) in set (0.002161s)
  16. taos> select * from foo;
  17. ts | value | metric_type |
  18. =======================================================================================
  19. 2022-04-20 09:54:51.219614235 | 1 | counter |
  20. Query OK, 1 row(s) in set (0.004179s)
  21. taos>