TCollector 写入

TCollector 是 openTSDB 的一部分,它用来采集客户端日志发送给数据库。

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

前置条件

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

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

配置步骤

配置 taosAdapter

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

  • 在 taosAdapter 配置文件(默认位置 /etc/taos/taosadapter.toml)中使能配置项
  1. ...
  2. [opentsdb_telnet]
  3. enable = true
  4. maxTCPConnections = 250
  5. tcpKeepAlive = false
  6. dbs = ["opentsdb_telnet", "collectd", "icinga2", "tcollector"]
  7. ports = [6046, 6047, 6048, 6049]
  8. user = "root"
  9. password = "taosdata"
  10. ...

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

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

配置 TCollector

使用 TCollector 需下载其源代码。其配置项在其源代码中。注意:TCollector 各个版本区别较大,这里仅以当前 master 分支最新代码 (git commit: 37ae920) 为例。

修改 collectors/etc/config.pytcollector.py 两个文件中相应内容。将原指向 OpenTSDB 宿主机的地址修改为 taosAdapter 被部署的服务器域名或 IP 地址,修改端口为 taosAdapter 支持 TCollector 使用的相应端口(默认为 6049)。

示例为源代码修改内容的 git diff 输出:

  1. index e7e7a1c..ec3e23c 100644
  2. --- a/collectors/etc/config.py
  3. +++ b/collectors/etc/config.py
  4. @@ -59,13 +59,13 @@ def get_defaults():
  5. 'http_password': False,
  6. 'reconnectinterval': 0,
  7. 'http_username': False,
  8. - 'port': 4242,
  9. + 'port': 6049,
  10. 'pidfile': '/var/run/tcollector.pid',
  11. 'http': False,
  12. 'http_api_path': "api/put",
  13. 'tags': [],
  14. 'remove_inactive_collectors': False,
  15. - 'host': '',
  16. + 'host': '127.0.0.1',
  17. 'logfile': '/var/log/tcollector.log',
  18. 'cdir': default_cdir,
  19. 'ssl': False,
  20. diff --git a/tcollector.py b/tcollector.py
  21. index 21f9b23..4c71ba2 100755
  22. --- a/tcollector.py
  23. +++ b/tcollector.py
  24. @@ -64,7 +64,7 @@ ALIVE = True
  25. # exceptions, something is not right and tcollector will shutdown.
  26. # Hopefully some kind of supervising daemon will then restart it.
  27. MAX_UNCAUGHT_EXCEPTIONS = 100
  28. -DEFAULT_PORT = 4242
  29. +DEFAULT_PORT = 6049
  30. MAX_REASONABLE_TIMESTAMP = 2209212000 # Good until Tue 3 Jan 14:00:00 GMT 2040
  31. # How long to wait for datapoints before assuming
  32. # a collector is dead and restarting it
  33. @@ -943,13 +943,13 @@ def parse_cmdline(argv):
  34. 'http_password': False,
  35. 'reconnectinterval': 0,
  36. 'http_username': False,
  37. - 'port': 4242,
  38. + 'port': 6049,
  39. 'pidfile': '/var/run/tcollector.pid',
  40. 'http': False,
  41. 'http_api_path': "api/put",
  42. 'tags': [],
  43. 'remove_inactive_collectors': False,
  44. - 'host': '',
  45. + 'host': '127.0.0.1',
  46. 'logfile': '/var/log/tcollector.log',
  47. 'cdir': default_cdir,
  48. 'ssl': False,

验证方法

重启 taosAdapter:

  1. sudo systemctl restart taosadapter

手动执行 sudo ./tcollector.py

等待数秒后使用 TDengine CLI 查询 TDengine 是否创建相应数据库并写入数据。

  1. taos> show databases;
  2. name |
  3. =================================
  4. information_schema |
  5. performance_schema |
  6. tcollector |
  7. Query OK, 3 rows in database (0.001647s)
  8. taos> use tcollector;
  9. Database changed.
  10. taos> show stables;
  11. name |
  12. =================================
  13. proc.meminfo.hugepages_rsvd |
  14. proc.meminfo.directmap1g |
  15. proc.meminfo.vmallocchunk |
  16. proc.meminfo.hugepagesize |
  17. tcollector.reader.lines_dro... |
  18. proc.meminfo.sunreclaim |
  19. proc.stat.ctxt |
  20. proc.meminfo.swaptotal |
  21. proc.uptime.total |
  22. tcollector.collector.lines_... |
  23. proc.meminfo.vmallocused |
  24. proc.meminfo.memavailable |
  25. sys.numa.foreign_allocs |
  26. proc.meminfo.committed_as |
  27. proc.vmstat.pswpin |
  28. proc.meminfo.cmafree |
  29. proc.meminfo.mapped |
  30. proc.vmstat.pgmajfault |
  31. ...
TCollector - 图1note
  • TDengine 默认生成的子表名是根据规则生成的唯一 ID 值。