当前位置: 首页 > news >正文

云原生之运维监控实践-使用taosKeeper与TDinsight实现对TDengine服务的监测告警

背景

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

10月10日收到了 TDengine 官方微信公众号的一条推送,摘要如下:

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

时序数据库作为软件项目的基础设施,对其运行状态进行实时监控的重要性不言而喻,今天就来体验下重优化了监控和告警功能。曾在 TDengine 2.1.2.0 发布后,体验了将 TDengine 日志数据表的内容在 Grafana 仪表盘上可视化展现的功能;后来官方不断扩展其监控能力,打造了 TDinsight 这一可视化工具,与 Grafana 的生态打成一片。这篇文章通过容器化安装 TDengine 时序数据库与 TDinsight 监控大盘,使用 taosKeeperTDinsight 实现对 TDengine 服务的状态监测与钉钉告警消息推送。

虚机资源

共用到了2台虚机,1台作为应用服务节点,1台运维监控节点。

主机名IP说明
svc192.168.44.168服务节点
ops192.168.44.169监控节点

基本选用当前最新版本,即将安装的 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安装TDengine3.3.3.0

使用 Docker 安装 TDengine3.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安装效果

2024-10-16-1-TDengineGUI.jpg

  • 浏览器验证metrics端点

浏览器访问http://192.168.44.168:6043/metrics,这些指标默认会被写入 TDenginelog 数据库,而 Grafana 则通过读取 log 数据库的数据表实现监控数据可视化。

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

ops节点:docker-compose安装Grafana

参考云原生之运维监控实践-OpenEuler22.03SP3上安装Prometheus与Grafana实现主机状态监测

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/grafanaSuccessfully 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-datasourcePlease 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。

配置数据源

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

2024-10-16-2-Datasource1.jpg

2024-10-16-2-Datasource2.jpg

导入仪表板

  • 查看现成的仪表板

https://grafana.com/grafana/dashboards/这个页面是 Grafana 的官方仪表板目录,用户可以在这里找到和共享各种现成的 Grafana 仪表板。这些仪表板覆盖了多种监控需求,包括系统性能、应用监控、网络流量等。用户可以根据自己的需求搜索和导入适合的仪表板,提高监控效率和可视化效果。这里我们搜索 TDengine ,结果中有个 TDinsight for 3.x ,点击进去可以查看详细的UI效果,复制仪表板的id,此处是18180。

  • 导入现成的仪表板
  1. 在右侧菜单中点击"New"按钮,然后选择"Import"。
  2. 在输入框中,可以直接输入现成仪表板的ID,或者上传JSON文件。常用的主机监控仪表板ID是18180(TDinsight for 3.x)。
  3. 点击"Load",随后选择已配置好的数据源。
  4. 点击"Import"完成导入。

2024-10-16-3-AddTDinsight1.jpg

2024-10-16-3-AddTDinsight2.jpg

TDinsight监控效果

TDinsight 是使用监控数据库和 GrafanaTDengine 进行监控的解决方案;将集群状态、节点信息、插入及查询请求、资源使用情况等进行可视化展示,同时还支持 vnodednodemnode 节点状态异常告警。

2024-10-16-4-Dashboard1.png
2024-10-16-4-Dashboard2.jpg

TDinsight告警实战

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

告警原理说明:

  1. Grafana告警定期查询数据源并评估告警规则中定义的条件;
  2. 如果条件被违反,则会触发告警实例;
  3. 触发的实例根据匹配的标签路由到通知策略;
  4. 通知将发送到通知策略中指定的联系点。

2024-10-16-5-AlertFlow.jpg

配置告警规则

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

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

2024-10-16-5-AlertFlow1.jpg

配置推送方式

支持的推送方式较多,这里选用钉钉推送,从钉钉中获取机器人的 access_token ,并命名推送方式为 DingDingPush ;其中的 Message Type 后来我改成了 ActionCard

2024-10-16-5-AlertFlow2.jpg
2024-10-16-5-AlertFlow3.jpg

配置通知策略

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

2024-10-16-5-AlertFlow4.jpg

模拟压力告警

进入 TDengine 容器内部,执行 taosBenchmark ,为了模拟告警,这里在 test 数据库中创建10000张表,每张表写入2000000条数据,由于容器的磁盘空间有限,将会触发磁盘告警,进而导致 DNodesVNodes 停止工作,然后触发告警。

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

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

2024-10-16-6-AlertDemo.jpg
2024-10-16-6-AlertDemo2.jpg

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

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

2024-10-16-6-AlertDemo3.jpg

当我通过 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)

2024-10-16-6-AlertDemo4.jpg

Note: 在 PrometheusAlertManager 的生态中, alertstate 字段表示报警的状态,有以下几种可能的取值:

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

小总结

If you can’t measure it, you can’t improve it!

没有度量就没有改进,这篇文章介绍了如何使用 TDenginetaosKeeperTDinsight 来实现对 TDengine 服务的状态监测和告警功能。详细记录了在两台虚拟机上的安装过程,包括在服务节点上使用 Docker 安装最新版TDengine 3.3.3.0 ,以及在监控节点上安装 GrafanaTDinsight 插件。此外还展示了如何配置 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/

If you have any questions or any bugs are found, please feel free to contact me.

Your comments and suggestions are welcome!

相关文章:

云原生之运维监控实践-使用taosKeeper与TDinsight实现对TDengine服务的监测告警

背景 如果没有监控,那么最好的情况是没有问题发生,最糟糕的情况则是问题发生了但没有被发现。——《Prometheus监控实战》 在10月10日收到了 TDengine 官方微信公众号的一条推送,摘要如下: 今天(2024年10月10日)我们非常高兴地宣布…...

前端js,vue系统使用iframe嵌入第三方系统的父子系统的通信

前端js,vue系统使用iframe嵌入第三方系统的父子系统的通信 1,父子系统之间的通信问题 父系统给子系统传值可通过postMessage方式进行通信,postMessage(“传递的数据”,url) 1.1 父系统给子系统的传值 let iframe document.getElementById(childFrame); let o1 {…...

树莓派刷入OpenWrt后扩容overlay的方法

问题: 128G的SD卡刷入openwrt后发现可用空间不足100M(我用的squashfs固件,ext4也存在同样的问题,但能否用此方法需要自己尝试一下)。 rootOpenWrt:~# df -h Filesystem Size Used Available Use%…...

【JS】Node.js读取execle表格中的数据

在Node.js中读取.xlsx格式的Excel文件,可以使用xlsx库。这个库非常流行且易于使用。下面是一个基本示例,展示如何使用xlsx库读取.xlsx文件中的数据。 首先,你需要安装xlsx库。你可以使用npm来安装: npm install xlsx然后&#x…...

怎么为pdf文件设置密码?几种PDF文件设置密码的方法推荐

怎么为pdf文件设置密码?设置PDF文件密码,正是应对这一挑战的有效手段之一。通过为PDF文件设置密码,我们能够为文档加上一道安全锁,确保只有掌握密码的用户才能打开和查看文件内容。这一措施不仅保护了文档的隐私性,还防…...

Rust : FnOnce、线程池与多策略执行

一、问题&#xff1a;mpsc如何发送各类不同的函数&#xff1f; 3个关键词&#xff1a;闭包、Box与FnOnce&#xff1b;请细品。 use std::sync::{mpsc,Arc,Mutex}; use std::thread; fn process<F>(old:f32,name:String,f:F) where F: FnOnce(f32,String) {f(old,name);…...

一个汉字占几个字节、JS中如何获得一个字符串占用多少字节?

浅浅记录 一个汉字占几个字节&#xff1f;JS中如何获得一个字符串占用多少字节&#xff1f; 一个汉字占几个字节&#xff1f; GBK编码&#xff1a;一个汉字、中文字符都是占2个字节&#xff0c;英文字符占1个字节 UTF-8编码&#xff1a;一个汉字、中文字符都是占3个字节&#…...

CommonJS 和 ES modules

CommonJS 和 ES modules (ESM) 是两种不同的模块系统&#xff0c;它们用于组织 JavaScript 代码&#xff0c;并允许不同文件之间共享代码。 CommonJS (CJS) CommonJS 是最早的 JavaScript 模块化规范之一&#xff0c;主要用于 Node.js 环境中。CommonJS 规定每个文件都是一个…...

计算机网络——CDN

空间编码例子&#xff1a;不是发送N个相同颜色值&#xff0c;而是仅发送2个值&#xff0c;颜色和重复个数 时间编码例子&#xff1a;不是发送i1帧的全部编码&#xff0c;而是仅发送帧i差别的地方 视频播放时&#xff0c;先下载manifest file文件——>解析&#xff08;不…...

大数据治理:挑战与策略

随着信息技术的飞速发展&#xff0c;大数据已成为当今社会的重要资源。大数据治理作为管理和利用大数据的关键手段&#xff0c;对于提升数据质量、保障数据安全、实现数据价值具有重要意义。本文首先阐述了大数据治理的概念和目标&#xff0c;接着分析了大数据治理面临的挑战&a…...

屋面通风器安装方案及流程

屋面通风器的安装方案及流程是一个系统性工作&#xff0c;需要仔细规划和执行&#xff0c;以确保安装质量和通风器的正常运行。昱合昇天窗厂家为大家整理了详细的安装方案及流程&#xff0c;供您参考。一、安装前准备 1、确定安装位置 根据建筑物屋顶结构和通风需求&#xff0c…...

ComfyUI一键更换服装:IP-Adapter V2 + FaceDetailer(DeepFashion)

在这篇文章中&#xff0c;我们将探索如何使用新版的IP-Adapter和ComfyUI软件为人物进行换装。 整个过程非常简单&#xff0c;仅需要两张图片&#xff1a;一张服装图片和一张人物图片。 通过一系列节点的操作&#xff0c;ComfyUI就会把这个服装换到人物身上&#xff0c;并利用…...

AWS账号与亚马逊账号的关系解析

在当今数字化时代&#xff0c;云计算已成为企业和个人用户不可或缺的一部分。亚马逊网络服务&#xff08;AWS&#xff09;是全球领先的云计算平台&#xff0c;而亚马逊&#xff08;Amazon&#xff09;则是全球最大的在线零售商之一。许多人在使用这两个平台时&#xff0c;常常会…...

Java八大基本数据类型详解

引言 一、整数类型 二、 浮点类型 三、.字符类型 四、布尔类型 示例代码 注意事项 引言 在Java编程语言中&#xff0c;基本数据类型是构建程序的基础。了解这些数据类型的特性和使用方法对于编写高效且正确的代码至关重要。本文将详细介绍Java的八大基本数据类型&#xff…...

ChatGPT的终极指南概要

ChatGPT的终极指南概要 [ Prompt Format&#xff08;提示格式&#xff09; 是一种用于指导ChatGPT生成特定类型回答的模板。它通常包括以下几个部分&#xff1a; 角色&#xff08;Role&#xff09;&#xff1a;定义AI模型在Prompt中所扮演的角色&#xff0c;例如专家、顾问、…...

Android应用性能优化的方法

Android应用性能优化是一个复杂而关键的过程&#xff0c;涉及多个方面&#xff0c;包括布局优化、网络优化、安装包优化、内存优化、卡顿优化、启动优化等。以下是对这些优化方法的详细解析&#xff1a; 一、布局优化 布局优化是Android性能优化的基础&#xff0c;主要目标是…...

『网络游戏』客户端发送消息到服务器【17】

将上一章服务器的协议PEProtocol的.dll文件重新生成导入unity客户端中 命名为Net 点击生成 另一种导入.dll文件方式 在客户端粘贴即可 此时Net文件夹的.dll文件就导入进来了 创建脚本&#xff1a;NetSvc.cs 编写脚本&#xff1a;NetSvc.cs 修改脚本&#xff1a;GameRoot.cs 在…...

【系统架构设计师】专题:数据库系统考点梳理

更多内容请见: 备考系统架构设计师-核心总结目录 文章目录 一、数据库基本概念1、数据库技术的发展2、数据模型3、数据库管理系统4、数据库三级模式二、关系数据库1、关系数据库基本概念2、关系运算3、关系数据库设计基本理论三、数据库设计1、数据库设计的基本步骤2、数据需求…...

Java传递对象是值传递还是引用传递?

&#x1f389; 前言 之前一直以为Java传对象是引用传递&#xff0c;直到最近用Java写数据结构链表时遇到一些问题&#xff0c;这才让我重新思考这个问题&#xff0c;经过我的一番研究&#xff0c;发现不能一棒子打死&#xff0c;其实这其中既有值传递&#xff0c;又有引用传递…...

解锁C++多态的魔力:灵活与高效的编码艺术(上)

文章目录 前言&#x1f338;一、多态的定义与概念&#x1f33b;1.1 多态的核心思想&#xff1a;&#x1f33b;1.2 多态的两种主要形式&#xff1a; &#x1f338;二、多态的使用条件&#x1f33b;2.1 基类指针或引用2.1.1 为什么需要基类指针或引用 &#x1f33b;2.2 虚函数&am…...

k8s系列-Rancher 上操作的k8s容器网络配置总结

Rancher 上操作的k8s容器网络配置总结 要在 Rancher 中配置Spring Boot 应用 ykhd-zhjgyw-xpwfxfjfl 服务&#xff0c;正确的配置方式如下&#xff1a; 1. 应用程序监听端口 在 application.yaml 文件中&#xff0c;配置的应用监听端口是 10001&#xff0c;并且应用的上下文…...

2024年【氯化工艺】考试题库及氯化工艺考试内容

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 氯化工艺考试题库根据新氯化工艺考试大纲要求&#xff0c;安全生产模拟考试一点通将氯化工艺模拟考试试题进行汇编&#xff0c;组成一套氯化工艺全真模拟考试试题&#xff0c;学员可通过氯化工艺考试内容全真模拟&…...

从commit校验失效问题探究husky原理

一、背景 之前创建的项目&#xff0c;发现代码 commit 提交的时候没有了任何校验&#xff0c;具体表现&#xff1a; 一是 feat fix 等主题格式校验没有了二是代码 lint 不通过也能提交 尝试解决这个问题&#xff0c;并深入了解husky的实现原理&#xff0c;将相关的一些知识点…...

Azure OpenAI 服务上线具有音频和语音功能的 GPT-4o-Realtime-Preview,免费申请试用

微软宣布 GPT-4o-Realtime-Preview 音频和语音公开预览版的推出&#xff0c;这是对Microsoft Azure OpenAI 服务的重大增强&#xff0c;增加了高级语音功能并扩展了 GPT-4o 的多模式产品。 这一里程碑进一步巩固了 Azure 在人工智能领域的领导地位&#xff0c;尤其是在语音技术…...

基于IMX6UL的EPIT的定时器实验

定时器是最常用的外设&#xff0c;常常需要使用定时器来完成精准的定时功能&#xff0c;I.MX6U 提供了多 种硬件定时器&#xff0c;有些定时器功能非常强大。本章我们从最基本的 EPIT 定时器开始&#xff0c;学习如何配置EPIT 定时器&#xff0c;使其按照给定的时间&#xff0c…...

FreeMarker模板引擎入门:从基础到实践的全面指南

前言 什么是FreeMarker FreeMarker是一个基于模板生成文本输出的通用工具&#xff0c;它使用纯Java编写&#xff0c;能够生成HTML、XML、JSON、RTF、Java源代码等多种格式的文本。FreeMarker模板引擎允许将数据模型与模板文件结合&#xff0c;生成动态的文本输出&#xff0c;广…...

YOLOv8模型改进 第十讲 添加全维度动态卷积(Omni-dimensional Dynamic Convolution,ODConv)

本篇文章将介绍一种全新的改进机制——全维度动态卷积ODConv&#xff0c;并展示其在YOLOv8中的实际应用。现全维动态卷积&#xff08;Omni-dimensional Dynamic Convolution&#xff0c;ODConv&#xff09;是一种先进的动态卷积设计&#xff0c;旨在通过引入多维注意力机制来提…...

【环境搭建】远程服务器搭建ElasticSearch

参考&#xff1a; 非常详细的阿里云服务器安装ElasticSearch过程..._阿里云服务器使用elasticsearch-CSDN博客 服务器平台&#xff1a;AutoDL 注意&#xff1a; 1、切换为非root用户&#xff0c;su 新用户名&#xff0c;否则ES无法启动 2、安装过程中没有出现设置账号密码…...

机器学习与神经网络:诺贝尔物理学奖的新篇章

机器学习与神经网络&#xff1a;诺贝尔物理学奖的新篇章 引言 近日&#xff0c;2024年诺贝尔物理学奖颁发给了机器学习与神经网络领域的研究者&#xff0c;这是历史上的首次。诺贝尔物理学奖通常授予在自然现象和物理物质研究方面做出重大贡献的科学家。然而&#xff0c;今年…...

倍福TwinCAT程序中遇到的bug

文章目录 问题描述&#xff1a;TwinCAT嵌入式控制器CX5140在上电启动后&#xff0c;X001网口接网线通讯灯不亮&#xff0c;软件扫描不到硬件网口 解决方法&#xff1a;硬件断电重启后&#xff0c;X001网口恢复正常 问题描述&#xff1a;TwinCAT软件点击激活配置后&#xff0c;…...