Skip to main content

collectd 写入

collectd 是一个用来收集系统性能的守护进程。collectd 提供各种存储方式来存储不同值的机制。它会在系统运行和存储信息时周期性的统计系统的相关统计信息。利用这些信息有助于查找当前系统性能瓶颈和预测系统未来的负载等。

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

前置条件

要将 collectd 数据写入 TDengine,需要几方面的准备工作。

配置步骤

配置 taosAdapter

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

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

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

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

配置 collectd

collectd 使用插件机制可以以多种形式将采集到的监控数据写入到不同的数据存储软件。TDengine 支持直接采集插件和 write_tsdb 插件。

配置接收直接采集插件数据

修改 collectd 配置文件(默认位置 /etc/collectd/collectd.conf)相关配置项。

LoadPlugin network
<Plugin network>
Server "<taosAdapter's host>" "<port for collectd direct>"
</Plugin>

其中 <taosAdapter's host> 填写运行 taosAdapter 的服务器域名或 IP 地址。<port for collectd direct> 填写 taosAdapter 用于接收 collectd 数据的端口(默认为 6045)。

示例如下:

LoadPlugin network
<Plugin network>
Server "127.0.0.1" "6045"
</Plugin>

配置 write_tsdb 插件数据

修改 collectd 配置文件(默认位置 /etc/collectd/collectd.conf)相关配置项。

LoadPlugin write_tsdb
<Plugin write_tsdb>
<Node>
Host "<taosAdapter's host>"
Port "<port for collectd write_tsdb plugin>"
...
</Node>
</Plugin>

其中 <taosAdapter's host> 填写运行 taosAdapter 的服务器域名或 IP 地址。<port for collectd write_tsdb plugin> 填写 taosAdapter 用于接收 collectd write_tsdb 插件的数据(默认为 6047)。

LoadPlugin write_tsdb
<Plugin write_tsdb>
<Node>
Host "127.0.0.1"
Port "6047"
HostTags "status=production"
StoreRates false
AlwaysAppendDS false
</Node>
</Plugin>

然后重启 collectd:

systemctl restart collectd

验证方法

重启 collectd

sudo systemctl restart collectd

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

taos> show databases;
name |
=================================
information_schema |
performance_schema |
collectd |
Query OK, 3 row(s) in set (0.003266s)

taos> use collectd;
Database changed.

taos> show stables;
name |
=================================
load_1 |
memory_value |
df_value |
load_2 |
load_0 |
interface_1 |
irq_value |
interface_0 |
entropy_value |
swap_value |
Query OK, 10 row(s) in set (0.002236s)

taos> select * from collectd.memory_value limit 10;
ts | value | host | type_instance | type |
=========================================================================================================================================================
2022-04-20 09:27:45.459653462 | 54689792.000000000 | shuduo-1804 | buffered | memory |
2022-04-20 09:27:55.453168283 | 57212928.000000000 | shuduo-1804 | buffered | memory |
2022-04-20 09:28:05.453004291 | 57942016.000000000 | shuduo-1804 | buffered | memory |
2022-04-20 09:27:45.459653462 | 6381330432.000000000 | shuduo-1804 | free | memory |
2022-04-20 09:27:55.453168283 | 6357643264.000000000 | shuduo-1804 | free | memory |
2022-04-20 09:28:05.453004291 | 6349987840.000000000 | shuduo-1804 | free | memory |
2022-04-20 09:27:45.459653462 | 107040768.000000000 | shuduo-1804 | slab_recl | memory |
2022-04-20 09:27:55.453168283 | 107536384.000000000 | shuduo-1804 | slab_recl | memory |
2022-04-20 09:28:05.453004291 | 107634688.000000000 | shuduo-1804 | slab_recl | memory |
2022-04-20 09:27:45.459653462 | 309137408.000000000 | shuduo-1804 | used | memory |
Query OK, 10 row(s) in set (0.010348s)
note
  • TDengine 默认生成的子表名是根据规则生成的唯一 ID 值。