云原生之运维监控实践:使用 taosKeeper 与 TDinsight 实现对 时序数据库TDengine 服务的监测告警

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 在数字化转型的过程中,监控与告警功能的优化对保障系统的稳定运行至关重要。本篇文章是“2024,我想和 TDengine 谈谈”征文活动的三等奖作品之一,详细介绍了如何利用 TDengine、taosKeeper 和 TDinsight 实现对 TDengine 服务的状态监控与告警功能。作者通过容器化安装 TDengine 和 Grafana,演示了如何配置 Grafana 数据源、导入 TDinsight 仪表板、以及如何设置告警规则和通知策略。欢迎大家阅读。

小T导读:在数字化转型的过程中,监控与告警功能的优化对保障系统的稳定运行至关重要。本篇文章是“2024,我想和 TDengine 谈谈”征文活动的三等奖作品之一,详细介绍了如何利用 TDengine、taosKeeper 和 TDinsight 实现对 TDengine 服务的状态监控与告警功能。作者通过容器化安装 TDengine 和 Grafana,演示了如何配置 Grafana 数据源、导入 TDinsight 仪表板、以及如何设置告警规则和通知策略。欢迎大家阅读。

如果没有监控,那么最好的情况是没有问题发生,最糟糕的情况则是问题发生了但没有被发现。——《Prometheus监控实战》

在今年的 10 月 10 日我收到了 TDengine 官方微信公众号的一条推送,摘要如下:
今天我们非常高兴地宣布,TDengine 3.3.3.0 版本正式发布。本次更新引入了多项重要功能和性能优化,旨在为用户提供更高效、更灵活的数据解决方案。在 3.3.3.0 版本中,我们着重优化了监控和告警功能,新增了多种常见的 MySQL 函数,并增强了对 MongoDB 数据源的支持。这些改进将为用户在物联网和大数据应用中提供更强大的功能,助力大家在数字化转型过程中实现更大的成功。

时序数据库作为软件项目的核心基础设施,其运行状态的实时监控至关重要。今天,我们将体验一下经过重优化的监控和告警功能。早在 TDengine 2.1.2.0 发布时,就可以将 TDengine 的日志数据表内容可视化展示在 Grafana 仪表盘上;随着官方不断增强监控能力,TDinsight 应运而生,成为与 Grafana 深度集成的可视化工具。这篇文章将演示如何通过容器化安装 TDengine 与 TDinsight 监控大盘,并结合 taosKeeper 和 TDinsight 实现对 TDengine 服务状态的监测,以及如何通过钉钉推送告警消息。

虚机资源

在这次实践中,我共用到了 2 台虚机,1 台作为应用服务节点,1 台作为运维监控节点。
33.jpg
基本选用当前最新版本,即将安装的 Grafana 及组件版本信息如下:

  • Grafana 版本:11.2.0
  • TDengine 版本:3.3.3.0(自带了 taosAdapter 与 taosKeeper)

    系统环境

[root@ops ~]# uname -a
Linux ops 5.10.0-182.0.0.95.oe2203sp3.x86_64 #1 SMP Sat Dec 30 13:10:36 CST 2023 x86_64 x86_64 x86_64 GNU/Linux
[root@ops ~]# cat /proc/version
Linux version 5.10.0-182.0.0.95.oe2203sp3.x86_64 (root@dc-64g.compass-ci) (gcc_old (GCC) 10.3.1, GNU ld (GNU Binutils) 2.37) #1 SMP Sat Dec 30 13:10:36 CST 2023

svc 节点:使用 Docker 安装 TDengine 3.3.3.0

通过 Docker 安装 TDengine 3.3.3.0,创建名为 tdengine 的容器,并挂载数据与日志卷目录。

[root@svc opt]# docker pull tdengine/tdengine:3.3.3.0

[root@svc opt]# docker run -d --name tdengine -v /opt/tdengine/data:/var/lib/taos \
  -v /opt/tdengine/log:/var/log/taos \
  -p 6030:6030 -p 6041:6041 -p 6043-6060:6043-6060 -p 6043-6060:6043-6060/udp tdengine/tdengine:3.3.3.0
0b9e36feac54d787114e5eed8b5dc7fa132dcd29d736b7489733194a27f28cab
  • 使用客户端工具验证 TDengine 安装效果

1.PNG

  • 通过浏览器验证 metrics 端点
    在浏览器中访问 http://192.168.44.168:6043/metrics,即可查看 TDengine 的监控指标。这些指标默认会被写入 TDengine 的 log 数据库,Grafana 则通过读取该数据库中的数据表来实现监控数据的可视化展示。

注: taosKeeper 是 TDengine 3.0 版本的监控指标导出工具,通过简单配置即可获取 TDengine 的运行状态(这些指标可以导入到 Prometheus,本文直接使用 TDengine 存储)。

ops 节点:使用 Docker Compose 安装 Grafana

参考文章:《云原生之运维监控实践-OpenEuler22.03SP3上安装Prometheus与Grafana实现主机状态监测》https://blog.csdn.net/u013810234/article/details/142589059?spm=1001.2014.3001.5501
在安装 Grafana 的主机上,首先需要安装 TDinsight,之后才能在 Grafana 数据源中添加 TDengine 数据源。

# 编辑TDinsight下载脚本
[root@ops monitoring]# vi tdinsight-plugin.sh
get_latest_release() {
  curl --silent "https://api.github.com/repos/taosdata/grafanaplugin/releases/latest" |
    grep '"tag_name":' |
    sed -E 's/.*"v([^"]+)".*/\1/'
}
TDENGINE_PLUGIN_VERSION=$(get_latest_release)
grafana-cli \
  --pluginUrl https://github.com/taosdata/grafanaplugin/releases/download/v$TDENGINE_PLUGIN_VERSION/tdengine-datasource-$TDENGINE_PLUGIN_VERSION.zip \
  plugins install tdengine-datasource

# 复制下载脚本到Grafana容器中
[root@ops monitoring]# docker cp tdinsight-plugin.sh ops-grafana:/usr/share/grafana
                                             Successfully copied 2.05kB to ops-grafana:/usr/share/grafana

# 下载并安装TDinsight插件
[root@ops monitoring]# docker exec ops-grafana bash tdinsight-plugin.sh 
Deprecation warning: The standalone 'grafana-cli' program is deprecated and will be removed in the future. Please update all uses of 'grafana-cli' to 'grafana cli'
✔ Downloaded and extracted tdengine-datasource v3.6.0 zip successfully to /var/lib/grafana/plugins/tdengine-datasource

Please restart Grafana after installing or removing plugins. Refer to Grafana documentation for instructions if necessary.

# 重启Grafana容器
[root@ops monitoring]# docker restart ops-grafana
ops-grafana

TDinsight 监控实战

通过浏览器访问 http://192.168.44.169:3000 进入 Grafana。
配置数据源:

  1. 在左侧菜单中点击 “Add new connection”。
  2. 选择或搜索 “Data Sources”。
  3. 点击 “Add data source”,然后选择 “TDengine Datasource”。
  4. 在 “HTTP” 部分,输入 TDengine 的地址,例如:http://192.168.44.168:6041。
  5. 点击 “Save & Test”,确认连接成功。
    2.png
    3.png

导入仪表板

  • 查看现成的仪表板
    Grafana 官方仪表板目录:https://grafana.com/grafana/dashboards/,在这个页面上,用户可以找到并共享各种现成的 Grafana 仪表板,涵盖系统性能、应用监控、网络流量等多种监控需求。根据需求,用户可以搜索并导入适合的仪表板,提升监控效率和可视化效果。比如,搜索 “TDengine” 后,可以找到 TDinsight for 3.x 仪表板,点击查看详细 UI 效果,并复制仪表板 ID(如:18180)。
    导入现成的仪表板:
  1. 在 Grafana 右侧菜单中点击 “New” 按钮,选择 “Import”。
  2. 在输入框中,直接输入仪表板 ID【常用的主机监控仪表板 ID 是 18180(TDinsight for 3.x)】,或者上传 JSON 文件。
  3. 点击 “Load”,然后选择已配置好的数据源。
  4. 点击 “Import” 完成导入。

4.png

5.png

TDinsight 监控效果

TDinsight 是一款结合监控数据库和 Grafana 的 TDengine 监控解决方案。它可以实时可视化集群状态、节点信息、插入与查询请求、资源使用情况等关键指标,同时支持对 vnode、dnode 和 mnode 节点的状态进行异常告警。

6.png

7.png

TDinsight 告警实战

一个好警报的关键是能够在正确的时间、以正确的理由和正确的速度发送,并在其中放入有用的信息。
告警原理说明:

  1. Grafana 定期查询数据源并评估告警规则中定义的条件。
  2. 当条件被触发时,则会触发告警实例。
  3. 生成的告警实例根据标签匹配规则,路由至相应的通知策略。
  4. 通知会发送到策略中指定的联系点。

8.png

配置告警规则

这里我们使用 TDinsight 默认提供的告警规则。要建立一个出色的通知系统,我们需要考虑以下基础信息,而基于 Grafana 的 TDinsight 监控方案做到了:

  • 哪些问题需要通知;
  • 谁需要被告知;
  • 如何告知他们;
  • 多久告知他们一次。

9.png

配置推送方式

TDengine 支持多种推送方式,这里选择钉钉推送。首先,从钉钉中获取机器人的 access_token,然后将推送方式命名为 DingDingPush。在配置中,将消息类型(Message Type)更改为 ActionCard。
10.png
11.png

配置通知策略

默认的通知策略是邮件方式,这里直接调整为我们的 DingDingPush 。
12.png

模拟压力告警

进入 TDengine 容器内部,执行 taosBenchmark 命令。为了触发告警,我们在 test 数据库中创建了 10000 张表,每张表插入 200 万条数据。由于容器磁盘空间的限制,这将导致磁盘告警的触发,进而导致 DNodes 和 VNodes 停止工作,从而触发相应的告警。

[root@ops monitoring]# docker exec -it tdengine /bin/bash
root@9118ddbfa74b:~# taosBenchmark -I stmt -n 2000000 -t 10000

在 TDinsight 的仪表板上可以看到磁盘使用率已到达 95%,根据报警规则设置,即将触发告警。

13.png

14.png

告警触发推送与告警解除推送

当 taosBenchmark 写入数据逐渐将磁盘空间耗尽时,会触发告警,进而会通过我们配置的告警方式和策略进行推送,本文中我们将通过钉钉接收到推送消息:

15.png
当我在 taos 命令行中执行 drop database test; 删除 test 数据库后,TDengine 服务恢复正常。经过一段时间(一个告警监测周期),钉钉上会自动收到各类告警解除的通知。

[root@localhost monitoring]# docker exec -it tdengine /bin/bash
root@9118ddbfa74b:~# taos
Welcome to the TDengine Command Line Interface, Client Version:3.3.3.0
Copyright (c) 2023 by TDengine, all rights reserved.
  *********************************  Tab Completion  *************************************
  *   The TDengine CLI supports tab completion for a variety of items,                   *
  *   including database names, table names, function names and keywords.                *
  *   The full list of shortcut keys is as follows:                                      *
  *    [ TAB ]        ......  complete the current word                                  *
  *                   ......  if used on a blank line, display all supported commands    *
  *    [ Ctrl + A ]   ......  move cursor to the st[A]rt of the line                     *
  *    [ Ctrl + E ]   ......  move cursor to the [E]nd of the line                       *
  *    [ Ctrl + W ]   ......  move cursor to the middle of the line                      *
  *    [ Ctrl + L ]   ......  clear the entire screen                                    *
  *    [ Ctrl + K ]   ......  clear the screen after the cursor                          *
  *    [ Ctrl + U ]   ......  clear the screen before the cursor                         *
  ****************************************************************************************
Server is TDengine Community Edition, ver:3.3.3.0 and will never expire.

taos> drop database test;
Drop OK, 0 row(s) affected (1.476353s)

16.png
注意:在 Prometheus 和 AlertManager 的生态中,alertstate 字段表示报警的状态,可能有以下几种取值:

  • Firing:表示报警已触发。当报警规则条件满足时,报警状态会变为 Firing,表示触发了报警。通常情况下,报警会发送给相关的接收器或通知渠道,以便进行处理。
  • Resolved:表示报警已解决。当报警条件不再满足时,报警状态会变为 Resolved,表示报警已经解决。这意味着报警规则所监控的指标已经恢复到正常状态,不再需要进一步的处理。
  • Pending:表示报警处于等待状态。当报警规则的条件满足时,报警状态会从 Firing 变为 Pending,表示报警处于等待状态。在报警状态从 Firing 到 Resolved 之间的过渡期间,报警可能会处于 Pending 状态,这通常是因为报警规则定义了一些延迟或滞后的条件。

    结语

    If you can’t measure it, you can’t improve it!
    没有度量就没有改进。本文介绍了如何利用 TDengine、taosKeeper 和 TDinsight 实现对 TDengine 服务的状态监测与告警功能,详细记录了在两台虚拟机上进行的安装过程,包括在服务节点上使用 Docker 安装最新版的 TDengine 3.3.3.0,以及在监控节点上配置 Grafana 和 TDinsight 插件。此外,文章还展示了如何配置 Grafana 数据源、导入 TDinsight 仪表板、设置告警规则和通知策略。最后,通过模拟压力测试,演示了如何触发磁盘空间不足的告警,并通过钉钉接收告警推送与解除通知。

本实践充分展示了 TDengine 生态系统在监控和告警方面的强大功能,为数据库管理员和运维工程师提供了高效、可靠的监控解决方案。

Reference
https://github.com/taosdata/TDengine/releases/tag/ver-3.3.3.0
https://github.com/taosdata/TDengine/releases/tag/ver-3.3.3.0
https://grafana.com/grafana/dashboards/18180-tdinsight-for-3-x/
https://docs.taosdata.com/reference/components/taoskeeper/

相关实践学习
通过可观测可视化Grafana版进行数据可视化展示与分析
使用可观测可视化Grafana版进行数据可视化展示与分析。
目录
相关文章
|
4天前
|
关系型数据库 OLAP API
非“典型”向量数据库AnalyticDB PostgreSQL及RAG服务实践
本文介绍了非“典型”向量数据库AnalyticDB PostgreSQL及其RAG(检索增强生成)服务的实践应用。 AnalyticDB PostgreSQL不仅具备强大的数据分析能力,还支持向量查询、全文检索和结构化查询的融合,帮助企业高效构建和管理知识库。
42 19
|
2天前
|
运维 Cloud Native 开发工具
智能运维:云原生大规模集群GitOps实践
智能运维:云原生大规模集群GitOps实践,由阿里云运维专家钟炯恩分享。内容涵盖云原生运维挑战、管理实践、GitOps实践及智能运维体系。通过OAM模型和GitOps优化方案,解决大规模集群的发布效率与稳定性问题,推动智能运维工程演进。适用于云原生环境下的高效运维管理。
|
1天前
|
SQL 运维 关系型数据库
数据库自治服务DAS:云数据库高效运维的最佳拍档
数据库自治服务DAS是阿里云推出的高效运维解决方案,旨在简化复杂数据库管理。DAS基于机器学习和专家经验,提供自修复、自防护、自优化功能,涵盖多源数据库支持、丰富的应用场景及端到端运维能力。其企业版引入AI技术,实现智能诊断与优化,显著提升数据库稳定性、安全性和性能。通过自动化处理常见问题,如SQL优化、容量规划等,DAS大幅降低人工干预需求,缩短故障恢复时间,助力企业实现高效、智能化的数据库运维管理。
|
18天前
|
SQL 存储 运维
从建模到运维:联犀如何完美融入时序数据库 TDengine 实现物联网数据流畅管理
本篇文章是“2024,我想和 TDengine 谈谈”征文活动的三等奖作品。文章从一个具体的业务场景出发,分析了企业在面对海量时序数据时的挑战,并提出了利用 TDengine 高效处理和存储数据的方法,帮助企业解决在数据采集、存储、分析等方面的痛点。通过这篇文章,作者不仅展示了自己对数据处理技术的理解,还进一步阐释了时序数据库在行业中的潜力与应用价值,为读者提供了很多实际的操作思路和技术选型的参考。
29 1
|
1月前
|
弹性计算 安全 关系型数据库
活动实践 | 自建数据库迁移到云数据库
通过阿里云RDS,用户可获得稳定、安全的企业级数据库服务,无需担心数据库管理与维护。该方案使用RDS确保数据库的可靠性、可用性和安全性,结合ECS和DTS服务,实现自建数据库平滑迁移到云端,支持WordPress等应用的快速部署与运行。通过一键部署模板,用户能迅速搭建ECS和RDS实例,完成数据迁移及应用上线,显著提升业务灵活性和效率。
|
1月前
|
运维 Cloud Native 持续交付
深入理解云原生架构及其在现代企业中的应用
随着数字化转型的浪潮席卷全球,企业正面临着前所未有的挑战与机遇。云计算技术的迅猛发展,特别是云原生架构的兴起,正在重塑企业的IT基础设施和软件开发模式。本文将深入探讨云原生的核心概念、关键技术以及如何在企业中实施云原生策略,以实现更高效的资源利用和更快的市场响应速度。通过分析云原生架构的优势和面临的挑战,我们将揭示它如何助力企业在激烈的市场竞争中保持领先地位。
|
1月前
|
Kubernetes Cloud Native 微服务
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
|
2月前
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
63 3
|
2月前
|
Cloud Native 持续交付 云计算
云原生架构的演进与挑战
随着云计算技术的不断发展,云原生架构已成为企业数字化转型的重要支撑。本文深入探讨了云原生架构的概念、发展历程、核心技术以及面临的挑战,旨在为读者提供一个全面了解云原生架构的视角。通过分析Kubernetes、Docker等关键技术的应用,以及微服务、持续集成/持续部署(CI/CD)等实践案例,本文揭示了云原生架构在提高应用开发效率、降低运维成本、增强系统可扩展性等方面的显著优势。同时,也指出了云原生架构在安全性、复杂性管理等方面所面临的挑战,并提出了相应的解决策略。
|
1天前
|
人工智能 编解码 自然语言处理
AI运用爆发时代, 视频服务云原生底座“视频云”架构的全智能再进化
本文介绍了AI运用爆发时代下,视频服务云原生底座“视频云”架构的全智能再进化。随着AI技术的发展,视频内容和交互方式正经历深刻变革。文章从背景、视频AI应用挑战、视频云网端底座、AIGC时代的全智能化及未来展望五个方面展开讨论。重点阐述了云、网、端三者如何深度融合,通过AI赋能视频采集、生产、分发和消费全流程,实现视频处理的智能化和高效化。同时,展望了未来AI在视频领域的创新应用和潜在的杀手级应用。

热门文章

最新文章