尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

TDengine 集成 collectd:通过 taosAdapter 接入系统监控数据的完整指南

TDengine 集成 collectd:通过 taosAdapter 接入系统监控数据的完整指南 TDengine 集成 collectd通过 taosAdapter 接入系统监控数据的完整指南【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDenginecollectd 是一个广泛使用的系统性能采集守护进程通过插件机制可以将采集到的 CPU、内存、磁盘、网络等指标以多种协议输出。本文以 TDengine 开源仓库官方文档为主体完整讲解如何将 collectd 采集的数据写入 TDengine包括 write_tsdb 插件OpenTSDB 协议与二进制协议network 插件两种接入方式、taosAdapter 与 collectd 两侧的完整配置、参数语义、验证方法以及底层数据模型帮助你快速搭建collectd 采集 → taosAdapter 转发 → TDengine 存储查询的监控数据链路充分利用 TDengine 对时序数据的高效存储、查询性能和集群处理能力。collectd 写入 TDengine 的工作原理collectd 是一个用来收集系统性能的守护进程。它提供各种存储方式来存储不同值的机制会在系统运行和存储信息时周期性地统计系统的相关统计信息。利用这些信息有助于查找当前系统性能瓶颈和预测系统未来的负载。collectd 采用插件机制将采集到的监控数据以不同格式写入不同的数据存储软件。TDengine 支持写入两种来源的 collectd 数据对应的接入路径如下详见 taosAdapter 参考手册 中的相关章节collectd write_tsdb 插件这是 collectd 官方插件将监控数据转换为 OpenTSDB 协议格式并发送给后端存储系统。taosAdapter 通过opentsdb_telnet端口组中的对应端口默认 6047接收。collectd 二进制协议数据collectd 通过network插件以二进制协议直接发送原始数据taosAdapter 通过独立的[collectd]端口默认 6045接收。两种方式都不需要编写任何自定义代码——只需要将 collectd 的配置指向运行 taosAdapter 的服务器域名或 IP 地址和相应端口即可将 collectd 采集的数据写入 TDengine。整体架构如下collectd ──(write_tsdb 插件, OpenTSDB telnet 协议, 端口 6047)──▶ taosAdapter ──▶ TDengine 集群 collectd ──(network 插件, 二进制协议, 端口 6045)──────────────▶ taosAdapter ──▶ TDengine 集群前置条件要将 collectd 数据写入 TDengine需要以下几方面的准备工作TDengine 集群已经部署并正常运行。taosAdapter 已经安装并正常运行具体细节请参考 taosAdapter 的使用手册。taosAdapter 是 TDengine 的配套工具作为 TDengine 集群与应用之间的桥梁和适配器负责接收数据采集代理如 Telegraf、StatsD、collectd 等的数据并提供 InfluxDB/OpenTSDB 兼容的数据写入接口。collectd 已经安装安装 collectd 请参考其官方文档。在主流 Linux 发行版上通常可通过系统包管理器直接安装例如apt install collectd或yum install collectd。taosAdapter 作为 TDengine 服务端软件的一部分随服务器安装。安装完成后可以通过systemctl start taosadapter启动 taosAdapter 服务。方式一通过 write_tsdb 插件写入OpenTSDB telnet 协议配置 taosAdapter在 taosAdapter 配置文件默认位置为/etc/taos/taosadapter.toml中开启对应配置项使 taosAdapter 能够接收 collectd write_tsdb 插件的数据# 若设置为 true则使用 schemaless 特性写入数据时自动创建数据库 smlAutoCreateDB true [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你也可以修改配置文件中的dbs项来指定其他名称。上述dbs与ports数组按下标一一对应分别服务于 OpenTSDB telnet、collectd write_tsdb、icinga2、tcollector 四类兼容 OpenTSDB telnet 协议的采集端collectd write_tsdb 插件默认使用6047端口。user和password请填写实际的 TDengine 配置值。修改配置文件后需要重启 taosAdapter 使配置生效。配置 collectd修改 collectd 配置文件默认位置为/etc/collectd/collectd.conf加载write_tsdb插件并指向 taosAdapterLoadPlugin write_tsdb Plugin write_tsdb Node Host taosAdapters host Port port for collectd write_tsdb plugin ... /Node /PlugintaosAdapters 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 statusproduction StoreRates false AlwaysAppendDS false /Node /Plugin上述示例中还展示了几个常用可选配置HostTags用于为所有指标附加公共标签如statusproductionStoreRates控制是否以速率形式存储计数值AlwaysAppendDS控制是否始终追加数据源DS名称。方式二通过 collectd 二进制协议写入network 插件配置 taosAdapter在 taosAdapter 配置文件默认位置为/etc/taos/taosadapter.toml中开启[collectd]配置段... [collectd] enable true port 6045 db collectd user root password taosdata worker 10 ...默认情况下 taosAdapter 写入的数据库名为collectd你可以修改配置文件中的db项来指定其他名称。user和password请填写实际的 TDengine 配置值。修改配置文件后需要重启 taosAdapter 使配置生效。配置 collectd修改 collectd 配置文件默认位置为/etc/collectd/collectd.conf加载network插件LoadPlugin network Plugin network Server taosAdapters host port for collectd direct /PlugintaosAdapters host填写运行 taosAdapter 的服务器域名或 IP 地址。port for collectd direct填写 taosAdapter 用于接收 collectd 二进制数据的端口默认是6045。示例LoadPlugin network Plugin network Server 127.0.0.1 6045 /Plugin然后重启 collectdsystemctl restart collectd两种方式对比与选型建议对比维度write_tsdb 插件方式一network 插件二进制协议方式二collectd 侧插件write_tsdbnetwork数据格式OpenTSDB telnet 文本协议collectd 二进制协议taosAdapter 配置段[opentsdb_telnet][collectd]默认端口60476045默认数据库collectd由dbs数组指定collectd由db指定附加能力可配置 HostTags、StoreRates 等可配置 worker 线程数两种方式最终都通过 taosAdapter 内部的 schemaless 写入链路进入 TDengine实际选择取决于 collectd 实例中已启用的插件若已有 OpenTSDB 相关输出习惯或需要与其他 OpenTSDB 生态工具共用端口组可选择方式一若希望直接复用 collectd 二进制协议、配置最简可选择方式二。taosAdapter 相关配置参数详解除上面的示例配置外taosAdapter 参考手册 对相关配置参数给出了完整的默认值与语义理解这些参数有助于针对生产环境进行调优。collectd 二进制协议参数[collectd]段collectd.enable是否启用 collectd 协议支持默认false。collectd.portcollectd 服务监听端口默认6045。collectd.dbcollectd 数据的目标数据库默认collectd。collectd.user数据库用户名默认root。collectd.password数据库密码默认taosdata。collectd.token数据库令牌默认TDengine 企业版 3.4.0.0 及以上可用。collectd.ttl数据生存时间默认0表示永不过期。collectd.worker写入工作线程数默认10。OpenTSDB telnet 参数[opentsdb_telnet]段opentsdb_telnet.enable是否启用 OpenTSDB Telnet 协议默认false注意该协议本身不携带鉴权信息。opentsdb_telnet.ports监听端口数组默认[6046, 6047, 6048, 6049]依次对应 OpenTSDB telnet、collectd write_tsdb、icinga2、tcollector。opentsdb_telnet.dbs目标数据库数组与ports一一对应参考手册中给出的默认值为[opentsdb_telnet, collectd_tsdb, icinga2_tsdb, tcollector_tsdb]在 collectd 接入文档的示例配置中则将其中的 collectd 数据库显式指定为collectd二者按实际部署需求选用即可。opentsdb_telnet.user数据库用户名默认root。opentsdb_telnet.password数据库密码默认taosdata。opentsdb_telnet.ttl数据 TTL默认0。opentsdb_telnet.token数据库令牌默认TDengine 企业版 3.4.0.0 及以上可用。opentsdb_telnet.batchSize批量写入大小默认1。opentsdb_telnet.flushInterval刷新间隔默认0s。opentsdb_telnet.maxTCPConnections最大 TCP 连接数默认250。opentsdb_telnet.tcpKeepAlive是否启用 TCP KeepAlive默认false。公共参数smlAutoCreateDB从 3.0.4.0 版本起提供控制写入 schemaless 协议时是否自动创建数据库。当设置为true时如果目标数据库不存在taosAdapter 会在收到数据时自动创建当为false默认值时需要手动创建数据库否则写入失败。该参数同样作用于 collectd 数据写入等 schemaless 相关接口。连接池参数collectd 数据写入与 RESTful API、InfluxDB v1 写入、OpenTSDB 写入等接口共享同一个连接池可通过pool.maxConnect、pool.maxIdle、pool.idleTimeout、pool.waitTimeout、pool.maxWait等参数调节并发能力。此外taosAdapter 支持通过命令行参数、环境变量和配置文件三种方式配置优先级为命令行参数 环境变量 配置文件。命令行用法为argval形式例如taosadapter -p30000 --debugtrue。除了配置文件外也可以用 taosAdapter 命令行参数或设置环境变量来启动以开启接收 collectd 数据的能力更多细节可查阅 taosAdapter 参考手册。验证方法重启 collectdsudo systemctl restart collectd使用 TDengine CLI 验证数据写入使用taosshell 验证从 collectd 向 TDengine 写入数据并能够正确读出。首先确认数据库已创建taos show databases; name | information_schema | performance_schema | collectd | Query OK, 3 row(s) in set (0.003266s)切换到 collectd 数据库并查看超级表taos use collectd; Database changed. taos show stables; name | load_1 | memory_value | df_value | load_2 | load_0 | interface_1 | irq_value | 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)如果上述输出与预期一致说明 collectd → taosAdapter → TDengine 的整条链路已经打通数据可以正常写入和读出。数据模型超级表、子表与标签从上面的验证输出可以看出collectd 数据进入 TDengine 后被组织为一张张超级表STable表名与 collectd 的类型体系一一对应例如load_0、load_1、load_2对应 collectd 的 load 类型系统 1/5/15 分钟负载。memory_value内存指标。df_value磁盘文件系统空间指标。interface_0、interface_1网络接口流量指标。irq_value、entropy_value、swap_value中断、系统熵、交换分区等指标。每张超级表统一包含以下列以memory_value为例列名说明ts数据采集时间戳纳秒精度作为主时间戳列value采集到的指标值host采集主机标识标签来自 collectd 的 host 字段type_instance类型实例标签例如内存的buffered、free、slab_recl、used等细分项typecollectd 类型名称标签例如memory其中host、type_instance、type等作为标签TAG列用于过滤与聚合指标值作为普通列存储符合 TDengine 对时序数据时间戳 多标签 多指标的建模方式。需要注意的是TDengine 自动生成的子表名是按照规则生成的唯一 ID 值因此在show tables中看到的子表名并不是类似host-name的可读名称而是唯一的数字 ID。如果需要以可读的方式检索可以基于host等标签列进行查询。常见问题与注意事项数据库不存在导致写入失败如果smlAutoCreateDB为false默认需要提前手动创建数据库例如执行create database collectd;否则写入会失败也可以将smlAutoCreateDB设为true让 taosAdapter 自动建库。端口与协议对应关系6045 端口接收的是 collectd 二进制协议network 插件6047 端口接收的是 write_tsdb 插件转换后的 OpenTSDB telnet 协议配置时不要混淆。修改配置后必须重启服务无论是修改 taosAdapter 的/etc/taos/taosadapter.toml还是 collectd 的/etc/collectd/collectd.conf都需要重启对应服务systemctl restart taosadapter/sudo systemctl restart collectd才能生效。鉴权配置请将user、password以及企业版的token配置为实际的 TDengine 用户凭据避免使用默认口令暴露在生产环境。安全说明OpenTSDB telnet 协议本身不携带鉴权信息启用opentsdb_telnet时建议在受控网络内使用。更完整的 taosAdapter 功能如连接池、内存保护、日志配置等可继续参阅 taosAdapter 参考手册本文所依赖的 collectd 接入细节两种写入方式的标准配置收录于其 collectd 资源配置片段。至此你已可以在自己的环境中完成 collectd 与 TDengine 的对接并把系统性能监控数据沉淀到 TDengine 中做进一步分析与可视化。【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表