taosKeeper
简介
taosKeeper 是 TDengine 3.0 版本监控指标的导出工具,通过简单的几项配置即可获取 TDengine 的运行状态。taosKeeper 使用 TDengine RESTful 接口,所以不需要安装 TDengine 客户端即可使用。
安装
taosKeeper 有两种安装方式: taosKeeper 安装方式:
-
安装 TDengine 官方安装包的同时会自动安装 taosKeeper, 详情请参考 TDengine 安装。
-
单独编译 taosKeeper 并安装,详情请参考 taosKeeper 仓库。
配置和运行方式
配置
taosKeeper 需要在操作系统终端执行,该工具支持三种配置方式:命令行参数、环境变量 和 配置文件。优先级为:命令行参数、环境变量、配置文件参数。
在运行 taosKeeper 之前要确保 TDengine 集群与 taosAdapter 已经在正确运行。 并且 TDengine 已经开启监控服务,TDengine 配置文件 taos.cfg
中至少需要配置 monitor
和 monitorFqdn
。
monitor 1
monitorFqdn localhost # taoskeeper 服务的 FQDN
TDengine 监控配置相关,具体请参考:TDengine 监控配置。
启动
- Linux
- macOS
安装后,请使用 systemctl
命令来启动 taoskeeper 的服务进程。
systemctl start taoskeeper
检查服务是否正常工作:
systemctl status taoskeeper
如果服务进程处于活动状态,则 status 指令会显示如下的相关信息:
Active: active (running)
如果后台服务进程处于停止状态,则 status 指令会显示如下的相关信息:
Active: inactive (dead)
如下 systemctl
命令可以帮助你管理 taoskeeper 服务:
-
启动服务进程:
systemctl start taoskeeper
-
停止服务进程:
systemctl stop taoskeeper
-
重启服务进程:
systemctl restart taoskeeper
-
查看服务状态:
systemctl status taoskeeper
systemctl
命令需要 root 权限来运行,如果您非 root 用户,请在命令前添加sudo
。- 如果系统中不支持
systemd
,也可以用手动运行/usr/local/taos/bin/taoskeeper
方式启动 taoskeeper 服务。 - 故障排查:
- 如果服务异常请查看系统日志获取更多信息。
安装后,可以运行 sudo launchctl start com.tdengine.taoskeeper
来启动 taoskeeper 服务进程。
如下 launchctl
命令用于管理 taoskeeper 服务:
-
启动服务进程:
sudo launchctl start com.tdengine.taoskeeper
-
停止服务进程:
sudo launchctl stop com.tdengine.taoskeeper
-
查看服务状态:
sudo launchctl list | grep taoskeeper
launchctl
命令管理com.tdengine.taoskeeper
需要管理员权限,务必在前面加sudo
来增强安全性。sudo launchctl list | grep taoskeeper
指令返回的第一列是taoskeeper
程序的 PID,若为-
则说明 taoskeeper 服务未运行。- 故障排查:
- 如果服务异常请查看系统日志获取更多信息。
配置文件启动
执行以下命令即可快速体验 taosKeeper。当不指定 taosKeeper 配置文件时,优先使用 /etc/taos/taoskeeper.toml
配置,否则将使用默认配置。
$ taoskeeper -c <keeper config file>
下面是配置文件的示例:
# gin 框架是否启用 debug
debug = false
# 服务监听端口, 默认为 6043
port = 6043
# 日志级别,包含 panic、error、info、debug、trace等
loglevel = "info"
# 程序中使用协程池的大小
gopoolsize = 50000
# 查询 TDengine 监控数据轮询间隔
RotationInterval = "15s"
[tdengine]
host = "127.0.0.1"
port = 6041
username = "root"
password = "taosdata"
[metrics]
# 监控指标前缀
prefix = "taos"
# 存放监控数据的数据库
database = "log"
# 指定需要监控的普通表
tables = []
# 监控数据的配置选项
[metrics.databaseoptions]
cachemodel = "none"
[environment]
# 容器模式收集信息
incgroup = false
[log]
# 日志文件滚动个数
rotationCount = 5
# 日志文件切割时间
rotationTime = "24h"
# 日志文件切割大小 (字节)
rotationSize = 100000000
获取监控指标
taosKeeper 作为 TDengine 监控指标的导出工具,可以将 TDengine 产生的监控数据记录在指定数据库中,并提供导出接口。
查看监控结果集
$ taos
# 如上示例,使用 log 库作为监控日志存储位置
> use log;
> select * from taosd_cluster_info limit 1;
结果示例:
_ts | cluster_uptime | dbs_total | tbs_total | stbs_total | vgroups_total | vgroups_alive | vnodes_total | vnodes_alive | mnodes_total | mnodes_alive | connections_total | topics_total | streams_total | dnodes_total | dnodes_alive | grants_expire_time | grants_timeseries_used | grants_timeseries_total | cluster_id |
===================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
2024-06-04 03:03:34.341 | 0.000000000000000 | 2.000000000000000 | 1.000000000000000 | 4.000000000000000 | 4.000000000000000 | 4.000000000000000 | 4.000000000000000 | 4.000000000000000 | 1.000000000000000 | 1.000000000000000 | 2.000000000000000 | 0.000000000000000 | 0.000000000000000 | 1.000000000000000 | 1.000000000000000 | 0.000000000000000 | 3.000000000000000 | 0.000000000000000 | 554014120921134497 |
Query OK, 1 row(s) in set (0.001652s)
导出监控指标
$ curl http://127.0.0.1:6043/metrics
部分结果集:
# HELP taos_cluster_info_connections_total
# TYPE taos_cluster_info_connections_total counter
taos_cluster_info_connections_total{cluster_id="554014120921134497"} 8
# HELP taos_cluster_info_dbs_total
# TYPE taos_cluster_info_dbs_total counter
taos_cluster_info_dbs_total{cluster_id="554014120921134497"} 2
# HELP taos_cluster_info_dnodes_alive
# TYPE taos_cluster_info_dnodes_alive counter
taos_cluster_info_dnodes_alive{cluster_id="554014120921134497"} 1
# HELP taos_cluster_info_dnodes_total
# TYPE taos_cluster_info_dnodes_total counter
taos_cluster_info_dnodes_total{cluster_id="554014120921134497"} 1
# HELP taos_cluster_info_first_ep
# TYPE taos_cluster_info_first_ep gauge
taos_cluster_info_first_ep{cluster_id="554014120921134497",value="tdengine:6030"} 1
# HELP taos_cluster_info_first_ep_dnode_id
# TYPE taos_cluster_info_first_ep_dnode_id counter
taos_cluster_info_first_ep_dnode_id{cluster_id="554014120921134497"} 1
check_health
$ curl -i http://127.0.0.1:6043/check_health
返回结果:
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Mon, 03 Apr 2023 07:20:38 GMT
Content-Length: 19
{"version":"1.0.0"}
集成 Prometheus
taoskeeper 提供了 /metrics
接口,返回了 Prometheus 格式的监控数据,Prometheus 可以从 taoskeeper 抽取监控数据,实现通过 Prometheus 监控 TDengine 的目的。
抽取配置
Prometheus 提供了 scrape_configs
配置如何从 endpoint 抽取监控数据,通常只需要修改 static_configs
中的 targets 配置为 taoskeeper 的 endpoint 地址,更多配置信息请参考 Prometheus 配置文档。
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
- job_name: "taoskeeper"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["localhost:6043"]
Dashboard
我们提供了 TaosKeeper Prometheus Dashboard for 3.x
dashboard,提供了和 TDinsight 类似的监控 dashboard。
在 Grafana Dashboard 菜单点击 import
,dashboard ID 填写 18587
,点击 Load
按钮即可导入 TaosKeeper Prometheus Dashboard for 3.x
dashboard。