ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

TDengine 集群监控实战:TDinsight 与 Grafana 可视化方案完整指南

TDengine 集群监控实战:TDinsight 与 Grafana 可视化方案完整指南 TDengine 集群监控实战TDinsight 与 Grafana 可视化方案完整指南【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengineTDinsight 是 TDengine 官方为 Grafana 打造的监控解决方案taosd 通过 taosKeeper 周期性将集群的 CPU、内存、磁盘、网络、请求量、慢查询等运行指标写入指定数据库再由 Grafana 配合 TDengine 数据源插件将log数据库中的监控数据渲染为 Cluster Status、DNodes、Requests、DNode Resource Usage 等可视化面板并支持一键导入 16 条预置告警规则。本文将以当前仓库的官方文档为主体结合 taosKeeper Reference、taosd Reference 与 Grafana 集成文档 等仓库资料完整讲解从安装、配置、导入到日常监控与告警的端到端流程帮助读者在 TDengine 3.x 集群上快速落地一套实时、可扩展的监控体系。工作原理监控数据从 taosd 到仪表盘的完整链路TDinsight 的数据链路由四个组件协作完成taosdTDengine 数据库引擎在配置了monitor与monitorFqdn后周期性采集并上报自身与所在节点的运行指标。taosKeeper接收 taosd 上报的监控数据通过 TDengine RESTful 接口默认http://127.0.0.1:6041写入监控数据库默认数据库名为log。详见 taosKeeper Reference。taosAdapterTDengine 与外部应用之间的桥接组件提供 REST 与 WebSocket 接口既是 taosKeeper 写库的通道也是 Grafana 数据源插件查询log数据库的入口。Grafana TDengine 数据源插件数据源插件通过 taosAdapter 的 REST API 查询监控数据库中的超级表TDinsight 仪表盘将这些指标渲染为图表与告警。监控数据库log中的每个超级表对应一组监控指标。使用show stables可以查看全部 14 张超级表例如taosd_cluster_info集群状态、taosd_dnodes_infodnode 资源、taosd_dnodes_data_dirs数据目录、taos_sql_req客户端 SQL 请求、taos_slow_sql慢查询、adapter_requeststaosAdapter 请求等具体字段说明可参考 taosd 监控指标 与 taosKeeper 监控指标 两节。这些超级表正是 TDinsight 各面板的数据来源也是 16 条预置告警规则 SQL 的查询对象。前置条件在部署 TDinsight 之前请逐一确认以下服务已安装并正常运行TDengine 集群本仪表盘要求 TDengine 3.0.0.0 及以上版本并且必须开启监控上报配置。核心配置项为monitor和monitorFqdn详见 taosd 监控相关配置monitor是否采集并上报监控数据0 为关闭、1 为开启默认值 1monitorFqdntaosKeeper 服务所在主机的 FQDN默认无值monitorPorttaosKeeper 监听端口默认 6043monitorInterval监控数据写入周期秒范围 1-86400默认 30。taosAdapter已安装并正常运行参考 taosAdapter Reference。taosKeeper已安装并正常运行参考 taosKeeper Reference。Grafana 服务推荐使用最新版本TDinsight 支持 Grafana 8.0 及以上版本。:::info 下文以 Grafana v11.0.0 为例进行说明其他版本的界面与功能可能略有差异。 :::同时记录以下三类信息后续配置数据源和选择监控库时都会用到taosAdapter 集群 REST API 地址例如http://localhost:6041taosAdapter 集群认证信息用户名与密码taosKeeper 用于记录监控指标的数据库名默认log。安装 TDengine 数据源插件并配置数据源TDinsight 仪表盘依赖 Grafana 的 TDengine 数据源插件tdengine-datasource。插件安装与数据源配置的详细步骤请参考 Grafana 集成文档此处给出三种最常用的安装方式方式一Grafana 服务器上执行安装脚本适用于 Grafana 8.x 及以上版本或使用 Grafana Provisioning 的用户bash -c $(curl -fsSL \ https://raw.githubusercontent.com/taosdata/grafanaplugin/master/install.sh) -- \ -a http://localhost:6041 \ -u root \ -p taosdata安装完成后需要重启 Grafana 服务生效。方式二grafana-cli命令行安装sudo -u grafana grafana-cli --pluginUrl \ https://downloads.tdengine.com/tdengine-tsdb-datasource/tdengine-datasource.zip \ plugins install tdengine-datasource方式三手动安装下载tdengine-datasource.zip并解压到 Grafana 插件目录如/var/lib/grafana/plugins然后重启 Grafana。安装完成后访问http://localhost:3000默认用户名/密码admin/admin通过Configuration - Data Sources添加数据源在搜索框输入 TDengine 并选择配置以下参数HostTDengine 集群提供 REST 服务的 IP 与端口默认http://localhost:6041UserTDengine 用户名PasswordTDengine 用户密码。点击Save Test测试连通性成功后提示TDengine Data source is working。导入 TDinsightV3 仪表盘数据源配置完成后可以通过以下三种方式之一导入TDengine for 3.x仪表盘推荐方式从数据源内置仪表盘导入。在数据源配置页面点击 “Settings” 旁的 “Dashboards”即可看到数据源内置的仪表盘列表选择 “TDengine for 3.x” 旁的 “Import” 即可完成导入。通过 Dashboard ID 导入。在 Grafana 主界面左侧点击 “Dashboards” Tab在右上角 “New” 选项下选择 “Import”输入仪表盘 ID18180对应 “TDengine for 3.x” 仪表盘完成导入。通过 JSON 配置文件导入从 Grafana 官网下载 “TDengine for 3.x” 仪表盘的 JSON 文件Dashboard ID 18180在 Grafana 主界面左侧点击 “Dashboards” Tab在右上角 “New” 选项下选择 “Import”在 “Import via dashboard JSON model” 区域粘贴刚下载的 JSON 内容点击 “Import” 完成导入。导入成功后即可访问该仪表盘。请在左上角 “Log from” 下拉框中选择 taosKeeper 中设置的用于记录监控指标的数据库默认log即可查看监控结果。TDinsightV3 仪表盘面板详解TDinsight 仪表盘旨在提供 TDengine 相关资源dnodes、mnodes、vnodes、databases 等的使用情况与状态信息主要包括 Cluster Status、DNodes Overview、MNode Overview、Requests、Databases、DNode Resource Usage 和 taosAdapter Monitoring 几个板块。以下逐一说明各面板的指标含义。集群状态Cluster Status本板块展示集群的当前信息与状态。各指标说明自上而下、自左而右First EP当前 TDengine 集群的firstEp配置值VersionTDengine 服务端版本master mnode 版本Expire TimeTSDB-Enterprise 的授权过期时间Used Measuring PointsTSDB-Enterprise 已使用的测量点数量Databases数据库数量Connections当前连接数DNodes / MNodes / VGroups / VNodes各类资源的总数与存活数Classified Connection Counts按用户、应用与 IP 分类的当前活跃连接数DNodes / MNodes / VGroups / VNodes Alive Percent各类资源的存活/总数比例启用了告警规则当资源存活率1 分钟内的平均健康资源比例低于 100% 时触发告警Measuring Points Used已使用的测量点数量并启用告警规则TSDB-OSS 无此数据默认健康。这些指标的原始数据来自log数据库的taosd_cluster_info超级表字段如dnodes_total、dnodes_alive、connections_total、grants_expire_time等其字段级定义见 taosd 监控指标。DNodes 概览DNodes Overview本板块展示集群 dnode 的基础信息DNodes Statusshow dnodes的简单表格视图DNodes NumberDNodes 数量的变化趋势。MNode 概览MNode Overview本板块展示集群 mnode 的基础信息MNodes Statusshow mnodes的简单表格视图MNodes Number与DNodes Number类似展示 MNodes 数量的变化。请求统计Request Statistics本板块包含集群内 SQL 执行的统计指标。Select Requestselect 请求数量Delete Requestdelete 请求数量Insert Requestinsert 请求数量Inserted Rows实际插入的行数Slow Sql慢查询数量可在顶部按耗时区间过滤。表统计Table Statistics本板块包含集群内表的统计指标STables超级表数量Total Tables表的总数Tables所有基础表的数量随时间变化图Tables Number Foreach VGroups每个 VGroup 包含的表数量。DNode 资源使用DNode Resource Usage本板块展示集群内所有数据节点的资源使用情况每个数据节点以一行Row呈现。各指标说明自上而下、自左而右Uptimednode 创建以来经过的时间Has MNodes?当前 dnode 是否为 mnodeCPU CoresCPU 核数VNodes Number当前 dnode 上的 vnode 数量VNodes Masters处于 master 角色的 vnode 数量Current CPU Usage of taosdtaosd 进程的 CPU 使用率Current Memory Usage of taosdtaosd 进程的内存使用量Max Disk Usedtaosd 所有数据目录中的最大磁盘使用率CPU Usage进程与系统的 CPU 使用率RAM Usage内存使用指标的时间序列视图Disk Used多级存储下各层级磁盘使用量默认为 level0Disk IO磁盘 IO 速率Net IO网络 IO即扣除本地网络的网络总 IO 速率。taosAdapter 监控taosAdapter Monitoring本板块包含 taosAdapter REST 与 WebSocket 请求的详细统计Total请求总数Successful成功请求总数Failed失败请求总数Queries查询请求总数Writes写入请求总数Other其他请求总数。同时以上各类别还有对应的折线图展示时序变化。对应指标原始数据来自log数据库的adapter_requests超级表如total、success、fail、query、write、other等字段。一键导入预置告警规则在总结用户实践经验的基础上TDengine 官方梳理出 16 条常用告警规则。这些规则可以监控 TDengine 集群的关键指标并在指标异常或超限时上报告警。从TDengine-Server 3.3.4.3TDengine-datasource 3.6.3开始TDengine 数据源支持预置告警规则的一键导入可在Grafana 11 及以上版本中一次性导入全部 16 条规则。导入方式在 TDengine 数据源设置界面打开 “Load TDengine Alert” 开关点击 “Save test” 按钮插件即会自动加载上述 16 条告警规则到 Grafana alerts 目录。如不再需要可关闭 “Load TDengine Alert” 开关并点击 “Clear TDengine Alert” 旁的按钮清除导入到该数据源的全部告警规则。导入后点击 Grafana 界面左侧的 “Alert rules” 即可查看全部告警规则通过配置联系点Contact points用户即可接收告警通知。16 条告警规则的具体配置如下表所示告警规则规则阈值无数据行为数据扫描间隔持续时长SQLdnode 节点 CPU 负载平均值 80%触发告警5 分钟5 分钟select now(), dnode_ep, last(cpu_system) as cpu_use from log.taosd_dnodes_info where _ts (now- 5m) and _ts now partition by dnode_epdnode 节点内存平均值 60%触发告警5 分钟5 分钟select now(), dnode_ep, last(mem_engine) / last(mem_total) * 100 as taosd from log.taosd_dnodes_info where _ts (now- 5m) and _ts now partition by dnode_epdnode 节点磁盘容量占用 80%触发告警5 分钟5 分钟select now(), dnode_ep, data_dir_level, data_dir_name, last(used) / last(total) * 100 as used from log.taosd_dnodes_data_dirs where _ts (now - 5m) and _ts now partition by dnode_ep, data_dir_level, data_dir_name授权即将过期 60 天触发告警1 天0 秒select now(), cluster_id, last(grants_expire_time) / 86400 as expire_time from log.taosd_cluster_info where _ts (now - 24h) and _ts now partition by cluster_id having first(_ts) 0已使用测量点达到授权数 90%触发告警1 天0 秒select now(), cluster_id, CASE WHEN max(grants_timeseries_total) 0.0 THEN max(grants_timeseries_used) /max(grants_timeseries_total) * 100.0 ELSE 0.0 END AS result from log.taosd_cluster_info where _ts (now - 30s) and _ts now partition by cluster_id having timetruncate(first(_ts), 1m) 0并发查询请求数 100不触发告警1 分钟0 秒select now() as ts, count(*) as slow_count from performance_schema.perf_queries慢查询执行最大时间无时间窗口 300 秒不触发告警1 分钟0 秒select now() as ts, count(*) as slow_count from performance_schema.perf_queries where exec_usec300000000dnode 离线total ! alive触发告警30 秒0 秒select now(), cluster_id, last(dnodes_total) - last(dnodes_alive) as dnode_offline from log.taosd_cluster_info where _ts (now -30s) and _ts now partition by cluster_id having first(_ts) 0vnode 离线total ! alive触发告警30 秒0 秒select now(), cluster_id, last(vnodes_total) - last(vnodes_alive) as vnode_offline from log.taosd_cluster_info where _ts (now - 30s) and _ts now partition by cluster_id having first(_ts) 0数据删除请求数量 0不触发告警30 秒0 秒select now(), sum(\count) asdelete_countfrom log.taos_sql_req where sql_type delete and _ts (now -30s) and _ts nowAdapter RESTful 请求失败 5不触发告警30 秒0 秒select now(), sum(\fail) asFailedfrom log.adapter_requests where req_type0 and ts (now -30s) and ts nowAdapter WebSocket 请求失败 5不触发告警30 秒0 秒select now(), sum(\fail) asFailedfrom log.adapter_requests where req_type1 and ts (now -30s) and ts nowDnode 数据上报缺失 3触发告警180 秒0 秒select now(), cluster_id, count(*) as dnode_report from log.taosd_cluster_info where _ts (now -180s) and _ts now partition by cluster_id having timetruncate(first(_ts), 1h) 0dnode 重启max(update_time) last(update_time)触发告警90 秒0 秒select now(), dnode_ep, max(uptime) - last(uptime) as dnode_report from log.taosd_dnodes_info where _ts (now - 90s) and _ts now partition by dnode_ep流计算失败error_code! 0不触发告警1 分钟0 秒select now(), cluster_id, stream_name, last(cast(error_code as bigint)) as error_code from log.taosd_stream_failure where _ts (now - 120s) and _ts now partition by cluster_id, stream_name having first(_ts) 0流计算重算失败Failedrecalc jobs 0不触发告警1 分钟0 秒select now() as ts, stream_name, recalc_id, progress, message, count(*) as failed from information_schema.ins_stream_recalculates where status Failed partition by stream_name, recalc_id, progress, message注意事项流计算相关规则依赖流计算可观测性特性Stream failed与Stream recalculation failed两条规则仅支持 TDenginev3.4.2.7及以上版本。在更早版本上这两条规则会处于查询报错状态但不影响其他告警规则。升级注意事项使用 tdengine-datasource 4.0.1 及更早版本创建的数据源不会自动获得后续版本新增的告警规则。升级到 4.0.2 及以上版本后打开数据源设置页面并再次点击 “Save test”插件会把新增的 “Stream failed” 与 “Stream recalculation failed” 规则追加到已有的alert_1m规则组中。已有规则及其自定义配置阈值、标签、时长等、规则组评估间隔均会保留联系点与通知策略不受影响。以上规则完全开源可见TDengine 用户可根据自身业务需求修改和完善这些告警规则。升级 TDinsight以下三种方式可用于升级图形界面方式如有新版本可在 “TDengine Datasource” 插件页面点击 update 完成升级手动方式按照手动安装步骤自行安装新版 Grafana 插件与仪表盘脚本方式重新运行TDinsight.sh脚本升级到最新的 Grafana 插件与 TDinsight 仪表盘。卸载 TDinsight针对不同的安装方式卸载方法如下图形界面方式在 “TDengine Datasource” 插件页面点击 “Uninstall”脚本方式通过TDinsight.sh脚本安装的 TDinsight可使用命令行TDinsight.sh -R清理相关资源手动方式手动安装的 TDinsight彻底卸载需要清理以下内容Grafana 中的 TDinsight 仪表盘Grafana 中的数据源从插件安装目录删除tdengine-datasource插件。附录TDinsight.sh 脚本详解TDinsight.sh是在 Ubuntu 18.04/20.04 系统的 Grafana 中安装并配置 TDinsight 仪表盘的自动化脚本。以下为其完整用法说明Usage: ./TDinsight.sh ./TDinsight.sh -h|--help ./TDinsight.sh -n ds-name -a api-url -u user -p password Install and configure TDinsight dashboard in Grafana on Ubuntu 18.04/20.04 system. -h, -help, --help Display help -V, -verbose, --verbose Run script in verbose mode. Will print out each step of execution. -v, --plugin-version version TDengine datasource plugin version, [default: latest] -P, --grafana-provisioning-dir dir Grafana provisioning directory, [default: /etc/grafana/provisioning/] -G, --grafana-plugins-dir dir Grafana plugins directory, [default: /var/lib/grafana/plugins] -O, --grafana-org-id number Grafana organization id. [default: 1] -n, --tdengine-ds-name string TDengine datasource name, no space. [default: TDengine] -a, --tdengine-api url TDengine REST API endpoint. [default: http://127.0.0.1:6041] -u, --tdengine-user string TDengine user name. [default: root] -p, --tdengine-password string TDengine password. [default: taosdata] -i, --tdinsight-uid string Replace with a non-space ASCII code as the dashboard id. [default: tdinsight] -t, --tdinsight-title string Dashboard title. [default: TDinsight] -e, --tdinsight-editable If the provisioning dashboard could be editable. [default: false]绝大多数命令行选项也可以通过环境变量实现短选项长选项环境变量说明-v--plugin-versionTDENGINE_PLUGIN_VERSIONTDengine 数据源插件版本默认为 latest-P--grafana-provisioning-dirGF_PROVISIONING_DIRGrafana provisioning 目录默认/etc/grafana/provisioning/-G--grafana-plugins-dirGF_PLUGINS_DIRGrafana 插件目录默认/var/lib/grafana/plugins-O--grafana-org-idGF_ORG_IDGrafana 组织 ID默认 1-n--tdengine-ds-nameTDENGINE_DS_NAMETDengine 数据源名称默认 TDengine-a--tdengine-apiTDENGINE_APITDengine REST API 端点默认http://127.0.0.1:6041-u--tdengine-userTDENGINE_USERTDengine 用户名默认 root-p--tdengine-passwordTDENGINE_PASSWORDTDengine 密码默认 taosdata-i--tdinsight-uidTDINSIGHT_DASHBOARD_UIDTDinsight 仪表盘uid默认 tdinsight-t--tdinsight-titleTDINSIGHT_DASHBOARD_TITLETDinsight 仪表盘标题默认 TDinsight-e--tdinsight-editableTDINSIGHT_DASHBOARD_EDITABLEprovisioning 仪表盘是否可编辑默认 false:::note 新版插件使用 Grafana 统一告警unified alerting功能不再支持-E选项。 :::典型用法示例假设 TDengine 数据库运行在主机tdengine上HTTP API 端口为6041用户为root1密码为pass5ord执行./TDinsight.sh -a http://tdengine:6041 -u root1 -p pass5ord多集群监控如需监控多个 TDengine 集群需要搭建多个 TDinsight 仪表盘。设置非默认的 TDinsight 需要做一些调整-n、-i、-t选项需要改为非默认名称如果使用内置短信告警功能-N和-L也应一并修改sudo ./TDengine.sh -n TDengine-Env1 -a http://another:6041 -u root -p taosdata -i tdinsight-env1 -t TDinsight Env1注意事项请留意在界面中直接配置的数据源、通知渠道和仪表盘是不可变更的。如需修改应再次通过该脚本更新配置或手动修改/etc/grafana/provisioning目录下的配置文件这是 Grafana 的默认目录可通过-P选项按需更改。特别地使用 Grafana Cloud 或其他组织时可使用-O设置组织 ID-G可指定 Grafana 插件安装目录-e参数将仪表盘设置为可编辑。延伸将 TDinsight 纳入更多监控场景除 TDinsight 仪表盘外仓库还提供TaosKeeper Prometheus Dashboard for 3.xDashboard ID18587可在 Grafana Dashboard 菜单中点击 import 输入 ID 导入获得与 TDinsight 类似的监控面板同时 taosKeeper 提供/metrics与/metrics/v2两个 Prometheus 格式端点推荐使用 v2 内存缓存模式可将 TDengine 监控指标接入 Prometheus 生态。相关配置与指标明细见 taosKeeper Reference 的 “Integrating Prometheus” 一节完整的集群监控运维说明见 Monitoring Your Cluster。【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表