小 T 导读:taosAdapter 是 TDengine 这款时序数据库(Time Series Database)的配套工具,是 TDengine 集群和应用程序之间的桥梁和适配器。当我们需要从数据收集代理软件(如 Telegraf、StatsD、collectd 等)摄取数据时,使用 taosAdapter 能让这一操作变得更加高效。此外,它还提供了 InfluxDB/OpenTSDB 兼容的数据摄取接口,允许 InfluxDB/OpenTSDB 应用程序无缝移植到 TDengine。本文将整体介绍一下 taosAdapter,方便大家使用。
taosAdapter 主要提供以下功能:
- RESTful 接口
- 兼容 InfluxDB v1 写接口
- 兼容 OpenTSDB JSON 和 telnet 格式写入
- 无缝连接到 Telegraf
- 无缝连接到 collectd
- 无缝连接到 StatsD
- 支持 Prometheus remote_read 和 remote_write
taosAdapter 架构图
taosAdapter 部署方法
安装 taosAdapter
有两种安装方式,你可以选择进入涛思数据官网(https://www.taosdata.com/)下载 TDengine server 安装包,无需任何额外操作即可安装好 taosAdapter。
这种方式下,如果你需要将 taosAdapter 分离部署在 TDengine server 之外的服务器上,则应该在该服务器上安装完整的 TDengine 来安装 taosAdapter。除此之外,你还可以选择使用源代码编译生成 taosAdapter,具体可参考如下文档(https://github.com/taosdata/t...)。
启动/停止 taosAdapter
在 Linux 系统上 taosAdapter 服务默认由 systemd 管理,使用命令 systemctl start taosadapter 可以启动 taosAdapter 服务,使用命令 systemctl stop taosadapter 可以停止 taosAdapter 服务。
移除 taosAdapter
使用命令 rmtaos 可以移除包括 taosAdapter 在内的 TDengine server 软件。
升级 taosAdapter
taosAdapter 和 TDengine server 需要使用相同版本,请通过升级 TDengine server 来升级 taosAdapter。
taosAdapter 支持通过命令行参数、环境变量和配置文件来配置,默认配置文件是 /etc/taos/taosadapter.toml。其中,命令行参数优先于环境变量优先于配置文件,命令行用法是 arg=val,如 taosadapter -p=30000 --debug=true,详细参数列表可参见:https://docs.taosdata.com/ref...。
接口
TDengine RESTful 接口
你可以使用任何支持 http 协议的客户端访问 RESTful 接口地址 http://
InfluxDB
你可以使用任何支持 http 协议的客户端访问 Restful 接口地址 http:///influxdb/v1/write
支持 InfluxDB 查询参数如下:
- db 指定 TDengine 使用的数据库名
- precision TDengine 使用的时间精度
- u TDengine 用户名
- p TDengine 密码
注意:目前不支持 InfluxDB 的 token 验证方式,仅支持 Basic 验证和查询参数验证。
OpenTSDB
同样,你可以使用任何支持 http 协议的客户端访问 Restful 接口地址 http://
/opentsdb/v1/put/json/
/opentsdb/v1/put/telnet/
collectd
配置 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 需重新启动。
StatsD
配置 taosAdapter 接收 StatsD 数据的方法如下:
在 taosAdapter 配置文件(默认位置 /etc/taos/taosadapter.toml)中使能配置项:
...
[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,也可以修改 taosAdapter 配置文件 db 项来指定不同的名称。同样,user 和 password 填写实际 TDengine 配置的值,如果修改了配置文件,taosAdapter 需重新启动。
在上述两种接口下,也可以使用 taosAdapter 命令行参数或设置环境变量启动的方式,使 taosAdapter 能接收 collectd/StatsD 数据。更多接口及其配置方法,请参考 https://docs.taosdata.com/ref...。
内存使用优化方法
taosAdapter 将监测自身运行过程中的内存使用率,并通过两个阈值(pauseQueryMemoryThreshold 及 pauseAllMemoryThreshold)进行调节,有效值范围为 -1 到 100 之间的整数,单位为系统物理内存的百分比。
- 当超过 pauseQueryMemoryThreshold 阈值时将停止处理查询请求。http 返回内容为 code 503、body “query memory exceeds threshold”
- 当超过 pauseAllMemoryThreshold 阈值时停止处理所有写入和查询请求。http 返回内容为 code 503、body “memory exceeds threshold”
当内存回落到阈值之下时恢复对应功能。状态检查接口 http://
- 正常返回 code 200
- 无参数。如果内存超过 pauseAllMemoryThreshold 将返回 code 503
- 请求参数 action=query。如果内存超过 pauseQueryMemoryThreshold 或 pauseAllMemoryThreshold 将返回 code 503
我们可以根据具体项目应用场景和运营策略进行相应调整,建议使用运营监控软件及时进行系统内存状态监控。负载均衡器也可以通过这个接口检查 taosAdapter 运行状态。点击 https://docs.taosdata.com/ref... 可查看参数详情。
如何从旧版本 TDengine 迁移到 taosAdapter
在 TDengine server 2.2.x.x 或更早期版本中,taosd 进程包含一个内嵌的 HTTP 服务。如前文所述,taosAdapter 是一个使用 systemd 管理的独立软件,拥有自己的进程,并且两者有一些配置参数和行为是不同的,请见下表:
taosAdapter 主要通过参数 restfulRowLimit 来控制结果的返回条数,-1 代表无限制,默认无限制。该参数控制以下接口返回:
- http://
:6041/rest/sql - http://
:6041/prometheus/v1/remote_read/:db
如果出现故障,我们可以通过命令 systemctl status taosadapter 来检查 taosAdapter 运行状态,也可以通过设置 –logLevel 参数或者环境变量 TAOS_ADAPTER_LOG_LEVEL 来调节 taosAdapter 日志输出详细程度,有效值包括:panic、fatal、error、warn、warning、info、debug 以及 trace。
写在最后
受文章篇幅所限,本文并未包含 taosAdapter 应用手册的所有技术细节,如需查询相关配置内容,可以移步到 TDengine 官网-技术文档进行更具体了解。此外,欢迎大家扫码添加小助手小T,进入 TDengine 用户交流群,在本群中,你不仅可以与有同样业务场景的小伙伴进行交流,还可以获得官方技术人员的专业支持。
想了解更多 TDengine Database的具体细节,欢迎大家在GitHub上查看相关源代码。