万物皆可监控(shell脚本监控TIDB-DM和DSG同步状态)

2024-05-15 20:12

本文主要是介绍万物皆可监控(shell脚本监控TIDB-DM和DSG同步状态),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

监控的方式有很多,常用的有zabbix和prometheus平台,理论上都可以做到对有状态服务的监控,因为我个人对这两个监控平台不是很熟悉,所以一般喜欢使用shell脚本来做监控;

纯oracle 数据库的监控推荐使用EMCC,具体见如下博文。
EMCC13.5安装配置手册(详细版)_oracle emcc安装-CSDN博客

shell 脚本监控的优势:

简单灵活:使用Shell脚本可以快速实现自定义监控逻辑,灵活性高。

低资源消耗:脚本本身资源消耗低,可以直接运行在被监控主机上。

无外部依赖:无需额外的软件或服务,依赖于操作系统自带的工具。

当然劣势也很明显

维护成本高:脚本需要手动编写和维护,随着监控需求的增加,维护成本会显著上升。

缺乏集中管理:没有统一的监控平台和界面,难以集中管理和查看监控数据。

告警和通知:需要自行实现告警和通知机制,缺乏内置的高级告警管理功能。

历史数据和图表:难以实现长期数据存储和图表展示,需要额外的工具和开发工作。

一 .监控TIDB DM数据同步状态

如何将TIDB作为Mysql的从库实现实时数据同步_tidb数据库数据同步-CSDN博客
这篇文章详细介绍了使用TIDB作为mysql备库存放历史归档数据,并作为报表库。但是在后续的使用过程中,偶尔因为同步的过滤操作造成同步失败,虽然TIDB和DM集群都有Grafana,不过不会主动推送错误,导致长时间的同步失败;既然dm同步是有状态的服务,那么就可以通过shell脚本来监控。

DM同步状态监控命令

[root@tidb01 ~]# tiup dmctl --master-addr 10.xx.xx.xx:8261   query-status syncmestiup is checking updates for component dmctl ...timeout(2s)!Starting component `dmctl`: /root/.tiup/components/dmctl/v7.6.0/dmctl/dmctl --master-addr 10.250.38.37:8261 query-status syncmes{    "result": true,    "msg": "",    "sources": [        {            "result": true,            "msg": "",            "sourceStatus": {                "source": "mysql-01",                "worker": "dm-10.xx.xx.xx-8262",                "result": null,                "relayStatus": null            },            "subTaskStatus": [                {                    "name": "syncmes",                    "stage": "Running", ##如果状态正常 stage 是running                    "unit": "Sync",                    "result": null,                    "unresolvedDDLLockID": "",                    "sync": {                        "totalEvents": "45472123",                        "totalTps": "27",                        "recentTps": "1",                        "masterBinlog": "(mysql-bin.000386, 222374746)",                        "masterBinlogGtid": "",                        "syncerBinlog": "(mysql-bin.000386, 222370491)",                        "syncerBinlogGtid": "00000000-0000-0000-0000-000000000000:0",                        "blockingDDLs": [                        ],                        "unresolvedGroups": [                        ],                        "synced": false,                        "binlogType": "remote",                        "secondsBehindMaster": "0",                        "blockDDLOwner": "",                        "conflictMsg": "",                        "totalRows": "45472123",                        "totalRps": "27",                        "recentRps": "1"                    },                    "validation": null                }            ]        }    ]}

 那么监控的逻辑就比较简单,执行dmctl命令,检查输出结果集是否有running,如果没有咋发送邮件通知,告知同步异常

root@lyspltidb01 ~]# cat check_dm1.sh ##将当前状态放入log文件暂存/root/.tiup/bin/tiup dmctl --master-addr 10.xx.xx.xx:8261   query-status syncmes|grep "Running" >/root/new.log 2>&1/root/.tiup/bin/tiup dmctl --master-addr 10.xx.xx.xx:8261   query-status syncmes >/root/result.log 2>&1[root@lyspltidb01 ~]# cat check_dm.sh  ##正式脚本#!/bin/bash#check mysql to TIDB DM status by norton#check dm status sh /root/check_dm1.shsleep 10  ##因为dmctl执行需要几秒钟时间,这里sleep 10等待waitnum=$(cat /root/new.log | wc -l) ##判断是否有running# if no running mail alertif [ $num -eq 0 ]  ##如果没有抓取到running 关键字则表示同步状态异常 then   cat /root/result.log | mailx -s "tidb Check DM status Log" `cat /root/dba_mail.addr|grep -v \#`   echo "**********************************************************************" else ##如果正常情况暂存log   >/root/new.log   >/root/result.log fi[root@tidb01 ~]# 

范例邮件通知

二. shell脚本监控DSG同步状态

DSG SuperSync是一款由迪思杰(北京)数据管理技术有限公司研发的高性能数据库复制平台,主要用于容灾备份、业务分离、数据异构、数据共享、数据迁移和数据上云等场景。它在全量数据复制和增量数据同步方面表现出色,并支持结构变更同步、数据探测、数据转换、数据脱敏和数据质量实时检测等多项功能 (modb) (blog.csdn)。简单来说DSG和OGG差不多,但是我个人认为比OGG功能更强大,( 首次全同步,信创数据库支持,对DDL的支持等都优于OGG),缺点就是技术比较封闭,很多事情都需要依赖原厂支持(毕竟是商业软件)。

DSG的同步有个mon命令可以监控数据同步状态,关键为倒数第二行的数字,正常情况下同步正常,数字一般为0-3(业务量大,备库装载慢时可能会多);shell脚本监控的逻辑就是抓取mon执行结果的倒数第二行 等号后的数字,如果这个数字高于系统负载的阈值,则报警告知DSG同步异常。

[oracle@THSMLORACLE01 jobs]$ cat check_dsg_status.sh #!/bin/bash##mon是个类似top的刷新命令,这里加了timeout时间timeout 1s /oradata/dsg/dt1/scripts/mon > /home/oracle/jobs/dsg.log# 暂存dsg status logLOG_FILE="/home/oracle/jobs/dsg.log"# 获取倒数第二行SECOND_LAST_LINE=$(tail -n 2 "$LOG_FILE" | head -n 1)# 从倒数第二行中提取 = 后的数字NUMBER=$(echo "$SECOND_LAST_LINE" | awk -F '=' '{print $2}')#echo $NUMBER# 判断数字是否大于阈值if [ "$NUMBER" -gt 20 ]; then    # 发送邮件告警    #/home/oracle/jobs/dba_mail.addr 存放需要接受告警邮件的mail地址    echo "Warning DSG status error" | mail -s "Check thsm DSG Status" `cat /home/oracle/jobs/dba_mail.addr|grep -v \#`fi

三.AI是你的好帮手
   
对于这种逻辑很简单的代码AI都可以帮你来完成,哪怕稍微有些偏差,也可以在AI提供的代码,稍作修改就可以实现。所以如果有重要的服务需要监控,直接梳理出逻辑让AI给你写出脚本吧。

GPT: 这样逻辑更简洁,但是本地可以执行,放入crontab无法执行,上面的脚本多了暂存和wait可以。(有大佬知道原因吗?私信我)

    文心一言:结果和GPT差不多

更多oracle常用监控脚本可以参考
oracle常用监控脚本(纯干货,没有EMCC,ZABBIX也不怕)_oracle 监控及日常处理脚本-CSDN博客

这篇关于万物皆可监控(shell脚本监控TIDB-DM和DSG同步状态)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/992806

相关文章

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

hdu1565(状态压缩)

本人第一道ac的状态压缩dp,这题的数据非常水,很容易过 题意:在n*n的矩阵中选数字使得不存在任意两个数字相邻,求最大值 解题思路: 一、因为在1<<20中有很多状态是无效的,所以第一步是选择有效状态,存到cnt[]数组中 二、dp[i][j]表示到第i行的状态cnt[j]所能得到的最大值,状态转移方程dp[i][j] = max(dp[i][j],dp[i-1][k]) ,其中k满足c

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

状态dp总结

zoj 3631  N 个数中选若干数和(只能选一次)<=M 的最大值 const int Max_N = 38 ;int a[1<<16] , b[1<<16] , x[Max_N] , e[Max_N] ;void GetNum(int g[] , int n , int s[] , int &m){ int i , j , t ;m = 0 ;for(i = 0 ;

Linux服务器Java启动脚本

Linux服务器Java启动脚本 1、初版2、优化版本3、常用脚本仓库 本文章介绍了如何在Linux服务器上执行Java并启动jar包, 通常我们会使用nohup直接启动,但是还是需要手动停止然后再次启动, 那如何更优雅的在服务器上启动jar包呢,让我们一起探讨一下吧。 1、初版 第一个版本是常用的做法,直接使用nohup后台启动jar包, 并将日志输出到当前文件夹n

hdu3006状态dp

给你n个集合。集合中均为数字且数字的范围在[1,m]内。m<=14。现在问用这些集合能组成多少个集合自己本身也算。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.Inp

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动