万物皆可监控(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博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1424792.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Unity之Image图片挖洞

最近开发一款打地鼠小游戏,地鼠是3D的,身体比较庞大,管道比较窄小,所以管道其实没办法将地鼠完全遮盖,于是想了一下几个方法。 1,让美术把3D物体裁剪掉,让地鼠的形态体积不至于露出UI&#xff…

短视频矩阵系统/源码----可视化剪辑技术独家开发

现阶段市面上大多矩阵软件都非常程序化且需要使用者具有较强的逻辑思维能力或剪辑经验,这使得一些个人、团队、企业在使用时无形中增加了学习成本,剪辑出来的效果大多不尽如人意,发出来的视频没有流量,根本达不到预期效果。 如何提…

GIT基础02 多机器协作等命令

前言 首先我们知道git给我们提供了分支管理的功能 我们一般使用master分支作为线上环境,master分支一般是一个稳定的分支 我们通常是会创建一个其他分支进行开发,这样不会影响线上的机器运行 如果没有git提供这样的分支功能,就无法做到这一套了 指令学习 假设软件出现问题咋办…

Redis教程(二):Redis在Linux环境下的安装

Linux环境下安装: 下载地址:Downloads - Redis 安装步骤: 下载得到一个 tar.gz 压缩文件 上传到Linux的/opt/soft目录,使用以下命令解压 tar -zxvf redis-6.2.14.tar.gz Linux安装基本环境gcc,安装命令 yum insta…

基于Vue和uni-app的增强型单选ccRadioView组件开发

标题:基于Vue和uni-app的增强单选组件ccRadioView的设计与实现 摘要:本文将详细介绍如何使用Vue和uni-app构建一个简单、好用且通用的单选框组件ccRadioView。该组件提供了单选列表的功能,并支持反向传值,方便开发者快速实现单选…

强化学习的优化策略PPO和DPO

DPO DPO(直接偏好优化)简化了RLHF流程。它的工作原理是创建人类偏好对的数据集,每个偏好对都包含一个提示和两种可能的完成方式——一种是首选,一种是不受欢迎。然后对LLM进行微调,以最大限度地提高生成首选完成的可能性,并最大限…

界面组件DevExpress WPF v23.2 - 全新升级的数据编辑器、流程图组件

DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 DevExpress WPF控件日…

C语言 | Leetcode C语言题解之第92题反转链表II

题目: 题解: struct ListNode *reverseBetween(struct ListNode *head, int left, int right) {// 因为头节点有可能发生变化,使用虚拟头节点可以避免复杂的分类讨论struct ListNode *dummyNode malloc(sizeof(struct ListNode));dummyNode…

Redis-分布式锁实现方式

文章目录 Redis分布式锁的作用?Redis分布式锁的底层原理实现?Redis分布式锁的应用场景?Redis分布式锁遇到相关的场景问题?死锁问题锁超时问题归一问题可重入问题阻塞与非阻塞问题公平锁(Fair Lock)公平锁(F…

tomcat--应用部署

tomcat根目录结构 Tomcat中默认网站根目录是/usr/local/apache-tomcat-8.5.100/webapps/在Tomcat的webapps目录中,有个非常特殊的目录ROOT,它就是网站默认根目录。将eshop解压后的文件放到这个/usr/local/apache-tomcat-8.5.100/webapps/ROOT中。bbs解压…

Blender雕刻建模_笔画,镜像,动态拓扑

笔画 笔画选项,一般是对刷子(自由线)工具设置 描边方法如下:标红的为常用 -间隔:按一定间隔应用笔画的结果 例如:笔刷半径50,笔画间隔100%(笔刷直径的百分比)&#x…

Git项目管理——提交项目和版本回退(二)

个人名片: 🎓作者简介:嵌入式领域优质创作者🌐个人主页:妄北y 📞个人QQ:2061314755 💌个人邮箱:[mailto:2061314755qq.com] 📱个人微信:Vir2025WB…

一看就会的AOP事务

文章目录 AOPAOP简介AOP简介和作用AOP的应用场景为什么要学习AOP AOP入门案例思路分析代码实现AOP中的核心概念 AOP工作流程AOP工作流程AOP核心概念在测试类中验证代理对象 AOP切入点表达式语法格式通配符书写技巧 AOP通知类型AOP通知分类AOP通知详解 AOP案例案例-测量业务层接…

(1)双指针算法介绍与练习:移动零

目录 双指针算法介绍 练习:移动零 双指针算法介绍 双指针算法常见于数组和双向链表的题型 在数组中,双指针中的指针代表数组元素的下标,而不是真正的指针类型变量 在双向链表中,双指针中的指针即为真正意义上的指针&#xff…

线性系统(二)

线性系统(二) 1.直观理解线性方程组结构2. 不同解的结论3. 更一般的高斯-约旦消元法4.齐次线性方程组 链接: 线性系统(一) 1.直观理解线性方程组结构 长这样,方程就有解,即相交坐标。 长这样,…

免费思维13招之十三:种群型思维

免费思维13招之十三:种群型思维 免费思维的最后一个思维——族群思维 人,都是群居性的动物,在人群中的一部分人群对于另一部分人群来说,具有强大的吸引力。那么,我们就从这一点出发,通过对其中一部分人群进…

Online RL + IL :Policy Improvement via Imitation of Multiple Oracles

NIPS 2020 paper code 如何利用多个次优专家策略来引导智能体在线学习,后续有多个文章研究该设定下的RL。 Intro 论文探讨了在强化学习(RL)中,如何通过模仿多个次优策略(称为oracle)来提升策略性能的问题…

第25次修改留言板,修改了布局,样式和脚本分离

伤心城市 首页 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"beiwanglu" content"widthdevice-width, initial-scale1.0"><link rel"stylesheet" type&qu…

[Algorithm][回溯][字母大小写全排列][优美的排列][N皇后]详细讲解

目录 1.字母大小写全排列1.题目链接2.算法原理详解3.代码实现 2.优美的排列1.题目链接2.算法原理详解3.代码实现 3.N 皇后1.题目链接2.算法原理详解3.代码实现 1.字母大小写全排列 1.题目链接 字母大小写全排列 2.算法原理详解 本题逻辑与子集大致相同 思路一&#xff1a;每…

Windows 10无法远程桌面连接:原因及解决方案

在信息技术日益发展的今天&#xff0c;远程桌面连接已成为企业日常运维、技术支持乃至个人用户远程办公的必备工具。然而&#xff0c;有时我们可能会遇到Windows 10无法远程桌面连接的问题&#xff0c;这无疑会给我们的工作和生活带来诸多不便。 原因分析 1、远程访问未启用&a…