尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

TDengine StatsD 指标写入实战:通过 taosAdapter 把 StatsD 监控数据落库

发布时间:2026/9/14 3:29:58

资讯中心
01
ARTICLE

TDengine StatsD 指标写入实战:通过 taosAdapter 把 StatsD 监控数据落库

TDengine StatsD 指标写入实战:通过 taosAdapter 把 StatsD 监控数据落库
TDengine StatsD 指标写入实战通过 taosAdapter 把 StatsD 监控数据落库【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengineStatsD 是应用生态中广泛使用的轻量级指标收集协议而 TDengine 的配套组件 taosAdapter 原生提供了 StatsD 数据写入通道。本文基于当前仓库中的官方文档完整讲解如何将 StatsD 的应用性能指标counter、gauge、set、timing通过 taosAdapter 写入 TDengine包括 taosAdapter 侧与 StatsD 侧的全部配置参数、启动与验证步骤、数据模型说明并结合仓库中的稳定性测试脚本给出多实例采集的实战参考。读完后你能够独立完成“应用 → StatsD → taosAdapter → TDengine”全链路的接入与验证。整体数据链路在 TDengine 中接入 StatsD 数据的链路为应用/系统指标 --(UDP 8125)-- StatsD 进程 --(repeater, UDP/TCP)-- taosAdapter (:6044) --(连接池)-- TDengine (db: statsd)StatsD负责在本地汇总和总结应用指标它是一个简单的守护进程多年来已经发展成为一个收集应用性能指标的统一协议taosAdapter是 TDengine 服务端软件的一部分是 TDengine 集群和应用程序之间的桥梁提供 StatsD 协议接收端口默认6044并通过与 TDengine 共享的连接池完成写入StatsD 本身并不感知 TDengine它只负责把原始统计报文“重放”给 taosAdapter因此 StatsD 侧的改动仅仅是增加一个 repeater 后端。只需要在 StatsD 的配置文件中填写运行 taosAdapter 的服务器域名或 IP 地址和相应端口即可将 StatsD 的数据写入 TDengine从而充分利用 TDengine 对时序数据的高效存储查询性能和集群处理能力。前置条件要将 StatsD 数据写入 TDengine需要完成以下准备工作TDengine 集群已经部署并正常运行taosAdapter 已经安装并正常运行。taosAdapter 是 TDengine 服务端软件的一部分安装 TDengine server 时不需要额外步骤即可拥有该组件安装完成后可用systemctl start taosadapter启动服务。详细配置可参考 taosAdapter 参考手册StatsD 已经安装。StatsD 是独立项目需自行下载其源代码并执行npm install安装依赖。配置 taosAdapter使能 StatsD 接入配置文件方式在 taosAdapter 配置文件默认位置/etc/taos/taosadapter.toml中使能 StatsD 配置项官方给出的完整示例如下见 StatsD 配置片段# 写入 Schemaless 数据时自动创建数据库 smlAutoCreateDB true [statsd] enable true port 6044 db statsd user root password taosdata worker 10 gatherInterval 5s protocol udp maxTCPConnections 250 tcpKeepAlive false allowPendingMessages 50000 deleteCounters true deleteGauges true deleteSets true deleteTimings true其中 taosAdapter 默认写入的数据库名称为statsd也可以修改配置文件中db项来指定不同的名称user和password填写实际 TDengine 配置的账号。修改过配置文件后需重新启动 taosAdapter才能生效。除了配置文件还可以使用 taosAdapter 命令行参数或设置环境变量的方式启动并覆盖配置命令行参数优先于环境变量环境变量优先于配置文件用法形如taosadapter -p30000 --debugtrue。参数逐项说明结合 taosAdapter 参考手册 中的参数文档[statsd]各配置项的默认值与作用如下参数默认值说明statsd.enablefalse是否启用 StatsD 协议支持默认关闭必须显式置为truestatsd.port6044taosAdapter 接收 StatsD 数据的监听端口StatsD 的 repeater 端口需与之对应statsd.protocoludp4传输协议可选tcp/udp/tcp4/udp4statsd.dbstatsd数据写入的目标数据库名称statsd.userroot连接 TDengine 使用的用户名statsd.passwordtaosdata连接 TDengine 使用的密码statsd.token连接使用的 tokenTDengine TSDB Enterprisev3.4.0.0及以上生效statsd.ttl0数据生存时间0表示无超时statsd.gatherInterval5s数据采集flush间隔StatsD 语义上即统计周期statsd.worker10写入工作线程数statsd.allowPendingMessages50000允许挂起排队等待写入的消息数量上限statsd.maxTCPConnections250最大 TCP 连接数protocol 使用 TCP 时相关statsd.tcpKeepAlivefalse是否启用 TCP KeepAlivestatsd.deleteCounterstrue每次采集后是否删除计数器缓存statsd.deleteGaugestrue每次采集后是否删除 gauge 缓存statsd.deleteSetstrue每次采集后是否删除 set 缓存statsd.deleteTimingstrue每次采集后是否删除 timing 缓存关于几个容易忽略的语义smlAutoCreateDB这是全局级参数不属于[statsd]段从3.0.4.0版本开始提供控制 schemaless 协议写入时是否自动创建数据库。对 StatsD、InfluxDB v1、OpenTSDB、collectd、Telegraf 等写入接口均生效。设置为true时taosAdapter 收到数据会自动创建目标数据库如果不存在保持默认false时需要先手动create database statsd;否则写入会失败。gatherIntervalStatsD 是周期性汇报的统计模型taosAdapter 按该间隔聚合后批量落库。官方示例中nc写入后约一个采集周期即可在 SQL 中查到数据。deleteCounters/deleteGauges/deleteSets/deleteTimings对应 StatsD 四类指标counter 计数、gauge 瞬时值、set 基数、timing 时长。置为true时每次采集周期结束后清空本地缓存保证每个周期写入的是该周期内的增量/快照这是符合 StatsD 语义的推荐配置。配置 StatsD添加 repeater 后端StatsD 支持多个输出后端backends。要让 StatsD 把原始统计报文转发给 taosAdapter在其配置文件中启用repeater后端并指向 taosAdapter 的地址与端口即可。StatsD 的配置文件以其源代码根目录下的示例文件exampleConfig.js为基础修改其中taosAdapters host填写运行 taosAdapter 的服务器域名或 IP 地址port for StatsD填写 taosAdapter 接收 StatsD 数据的端口默认6044。配置要点backends 部分添加 ./backends/repeater repeater 部分添加 { host:taosAdapters host, port: port for StatsD}一个最小化的完整示例配置保存为config.js{ port: 8125 , backends: [./backends/repeater] , repeater: [{ host: 127.0.0.1, port: 6044}] }说明StatsD 进程自身监听8125端口接收应用侧指标报文repeater后端将收到的报文原样转发给127.0.0.1:6044即本机的 taosAdapter。若 StatsD 与 taosAdapter 不在同一台机器把 host 改为 taosAdapter 所在服务器的 IP 或域名并确保网络层放通 6044 端口。启动 StatsD假设配置文件名为config.jsnpm install node stats.js config.js 验证方法第一步启动 StatsD$ node stats.js config.js [1] 8546 $ 20 Apr 09:54:41 - [8546] reading config file: config.js 20 Apr 09:54:41 - server is up INFO看到server is up表示 StatsD 已监听 8125 端口并开始按config.js中的 repeater 配置转发数据。第二步使用 nc 写入测试数据无需真实应用直接用nc向 StatsD 发送一条 counter 报文即可模拟应用打点echo foo:1|c | nc -u -w0 127.0.0.1 8125报文格式即 StatsD 标准语法metric:value|type本例中指标名为foo、值为1、类型为ccounter。第三步使用 taos shell 验证读写等待一个采集周期gatherInterval默认 5 秒后进入 taos shelltaos show databases; name | information_schema | performance_schema | statsd | Query OK, 3 row(s) in set (0.003142s) taos use statsd; Database changed. taos show stables; name | foo | Query OK, 1 row(s) in set (0.002161s) taos select * from foo; ts | value | metric_type | 2022-04-20 09:54:51.219614235 | 1 | counter | Query OK, 1 row(s) in set (0.004179s)从查询结果可以确认三件事statsd数据库已由 taosAdapter 自动创建前提是smlAutoCreateDB true每个指标名foo对应一张超级表数据行包含时间戳ts、指标值value与指标类型metric_typecounter/gauge/set/timing三列。需要注意TDengine 会根据规则自动生成唯一的 ID 作为子表名即写入是按“超级表 自动命名的子表”组织的数据模型用户无需提前建表查询时直接select * from foo;即可汇总读取该指标的所有子表数据。仓库中的多实例稳定性测试参考当前仓库的测试框架中包含了一组基于 Docker 的 StatsD 采集稳定性测试脚本展示了在生产压测场景下如何规模化部署 StatsD 采集端statsd/Dockerfile基于ubuntu:20.04安装 nodejs 与 StatsD通过环境变量TaosadapterIp默认127.0.0.1与TaosadapterPort默认6044指定 taosAdapter 地址与本文的手动配置方式一一对应statsd/entrypoint.sh容器启动时用sed将配置模板中的TaosadapterIp/TaosadapterPort占位符替换为环境变量值后启动node stats.js config.js随后循环发送 100 条形如${HOSTNAME}.count${i}:55|c的 counter 报文。这里每个容器以自己的HOSTNAME为指标名前缀正好利用了 StatsD 的指标命名区分不同采集实例落库后按指标名即可区分来源机器statsd/run_statsd.sh批量拉起多个 StatsD 容器用法为./run_statsd.sh agent_count hostname前缀 TaosadapterIp TaosadapterPort例如./run_statsd.sh 2 statsd_agent* 172.26.10.86 6044会创建statsd_agent1、statsd_agent2两个采集节点同时向同一个 taosAdapter 6044 端口灌入数据。这套脚本验证了本文配置方式在“多 StatsD 实例 → 单 taosAdapter 接入点”的常见拓扑下是可复用的如果你的集群规模较大可通过调整statsd.worker写入线程数、statsd.allowPendingMessages排队上限以及 taosAdapter 全局连接池参数pool.maxConnect等默认 2 倍 CPU 核心数来匹配写入压力。常见问题与注意事项改了配置必须重启taosAdapter 的 StatsD 配置修改后需重启服务如systemctl restart taosadapter才生效这是官方文档明确的行为。statsd.enable默认为false只写了[statsd]段其他参数而未设enable true时接入不会生效。数据库不存在若未开启smlAutoCreateDB需先手动创建目标数据库否则写入失败。查不到数据StatsD 是周期汇报模型数据需等待一个gatherInterval周期默认 5 秒聚合并 flush 后才能查询到确认 StatsD 侧repeater指向的 host/port 与 taosAdapter 监听地址端口一致且网络可达。协议选择默认按 UDP 传输protocol可配置为tcp/udp/tcp4/udp4文档默认值标注为udp4使用 TCP 时maxTCPConnections默认 250与tcpKeepAlive才会起作用。小结将 StatsD 数据写入 TDengine 的核心就是两端各改一处配置taosAdapter 侧开启[statsd]段并配合smlAutoCreateDB自动建库StatsD 侧增加./backends/repeater后端指向 taosAdapter 的host:6044。之后指标数据会以“指标名即超级表”的模型自动落库每条数据包含ts、value、metric_type三列子表名由 TDengine 按规则自动生成无需预先建表。配合 taosAdapter 参考手册 中的连接池、内存阈值等全局配置即可在现有 StatsD 采集体系上平滑地把指标存储迁移到 TDengine并利用其时序压缩与集群能力进行后续的存储与查询。【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。