一、报警思路

  • m.conf文件记录配置信息,只需要修改这个文件的内容即可(需要将mysql_stat.sh里面的信息写到这里,进行中)
  • mysql_stat.sh文件作为MGR状态监测脚本,加入定时任务每分钟执行
  • send_mail.py文件作为报警发送脚本,一旦MGR状态不正常则mysql_stat.sh会调用send_mail.py脚本发送邮件
  • 由于MGR状态非ONLINE时,无法检测其他MGR节点是否正常,所以需在运行MGR的每台机器上都配置如下脚本

二、脚本配置

需要自行修改如下两项配置:

m.conf:MySQL相关

send_mail.py:修改报警邮件相关

三、脚本路径

[root@oratest51 data]# tree /data/mysql_monitor/
/data/mysql_monitor/
├── log
│   └── mysql_stat.log
├── m.conf
├── mysql_stat.sh
└── send_mail.py

三、脚本内容

3.1m.conf配置文件

[root@oratest52 mysql_monitor]# cat m.conf
#收件地址
mailaddress:xxx@xxx.com #mysql相关信息
mysql_user:root
mysql_pwd:123456
ip:172.16.9.52 #mysql进程记录日志
mysql_stat:/data/mysql_monitor/log/mysql_stat.log ##同步状态及延时检查配置##
#slave同步状态
#sync_status:/data/mysql_monitor/log/sync_stat.log
#slave同步错误记录日志
#sync_err:/data/mysql_monitor/log/sync_err.log ###增量及全量备份配置###
#mysql binlog目录
bindir:/data/mysql/data/3306
#mysql binlog index文件
binfile:/data/mysql/data/3306/mysql-bin.index
#每日增量备份存储路径
bakdir:/data/mysql_monitor/bakup/daily
#增量备份操作记录日志
logfile:/data/mysql_monitor/log/dailybak.log
#全量备份存储路径
full_bakdir:/data/mysql_monitor/bakup/weekly
#全量备份存储路径
full_baklog:/data/mysql_monitor/log/weeklybak.log

3.2MGR状态检查

以下两个脚本二选一

#!/bin/bash

MAIL_ADDR=`cat /data/mysql_monitor/m.conf |grep mailaddress |cut -d ":" -f2`
USER=`cat /data/mysql_monitor/m.conf |grep mysql_user |cut -d ":" -f2`
PASSWORD=`cat /data/mysql_monitor/m.conf |grep mysql_pwd |cut -d ":" -f2`
MYSQL_STAT_LOG=`cat /data/mysql_monitor/m.conf |grep mysql_stat |cut -d ":" -f2` IP=`cat /data/mysql_monitor/m.conf |grep ip |cut -d ":" -f2`
MYSQL_PORT=`netstat -na|grep "LISTEN"|grep -w "3306"|awk -F[:" "]+ '{print $4}'`
DATE=$(date "+%Y-%m-%d %H:%M.%S") STATUS=$(mysql -u$USER -p$PASSWORD --connect_timeout=5 -e "SELECT * FROM performance_schema.replication_group_members;" 2>&1 |sed -n '/group_replication_applier/p' |grep -w "ONLINE")
MGR=`echo $STATUS |grep ONLINE |awk '{print $5}' |head -n 1`
if [ "$MGR" = "ONLINE" ]
then
echo "MySQL MGR is ONLINE" > $MYSQL_STAT_LOG
else
echo "$DATE Server: $IP MySQL MGR status is not ONLINE,Please check MGR status!" > $MYSQL_STAT_LOG
python /data/mysql_monitor/mail.py 'mysql' $MAIL_ADDR "$IP Mysql Warn" < $MYSQL_STAT_LOG
fi
#!/bin/bash

MAIL_ADDR=`cat /data/mysql_monitor/m.conf |grep mailaddress |cut -d ":" -f2`
USER=`cat /data/mysql_monitor/m.conf |grep mysql_user |cut -d ":" -f2`
PASSWORD=`cat /data/mysql_monitor/m.conf |grep mysql_pwd |cut -d ":" -f2`
MYSQL_STAT_LOG=`cat /data/mysql_monitor/m.conf |grep mysql_stat |cut -d ":" -f2` IP=`cat /data/mysql_monitor/m.conf |grep ip |cut -d ":" -f2`
MYSQL_PORT=`netstat -na|grep "LISTEN"|grep -w "3310"|awk -F[:" "]+ '{print $4}'` DATE=$(date "+%Y-%m-%d %H:%M.%S")
mysql -u$USER -p$PASSWORD --connect_timeout=5 -e "SELECT * FROM performance_schema.replication_group_members;" 2>&1 |sed -n '/group_replication_applier/p' |grep -w ONLINE > /dev/null
if [ $? -ne 0 ]
then
echo "$DATE Server: $IP MySQL MGR status is not ONLINE,Please check MGR status!" > $MYSQL_STAT_LOG
python /data/mysql_monitor/send_mail.py 'mysql' $MAIL_ADDR "$IP Mysql Warn" < $MYSQL_STAT_LOG
else
echo "MySQL MGR is ONLINE" > $MYSQL_STAT_LOG
fi

3.3send_mail.py发送邮件

[root@oratest52 mysql_monitor]# cat send_mail.py
#!/usr/bin/python
#-*- coding: UTF-8 -*-
import sys,os,string,time,datetime,re
from sys import stdout
import poplib
import smtplib
from email.header import decode_header
from email.mime.text import MIMEText
import email def send_mail(sender, receiver,strsubject,strcontent):
_user = "13912345678@139.com"
_pwd = "xxx"
sent =smtplib.SMTP_SSL('smtp.139.com',465)
sent.login(_user, _pwd)
to = receiver.split(";")
content=MIMEText(strcontent,'html',_charset='UTF-8')
content['Subject']=strsubject
content['From']=sender
content['To']=','.join(to)
sent.sendmail('13912345678@139.com',to,content.as_string())
sent.close() ## main ##
if __name__=='__main__':
## get the path in the config file
if len(sys.argv) != 4:
print "sender,receiver,subject"
sys.exit(1)
sender=sys.argv[1]
receiver=sys.argv[2]
subject=sys.argv[3]
content =sys.stdin.read()
send_mail(sender, receiver, subject, content);

四、定时任务

将脚本加入定时任务执行

* * * * * /bin/sh /data/mysql_monitor/mysql_stat1.sh > /dev/null

MGR监控报警的更多相关文章

  1. SQL Server监控报警架构_如何添加报警

    一.数据库邮件报警介绍 数据库邮件是从SQL Server数据库引擎发送电子邮件企业解决方案,使用简单传输协议(SMTP)发送邮件.发送邮件进程与数据库的进程隔离,因此可不用担心影响数据库服务器. 数 ...

  2. Windows Azure功能更新:弹性伸缩(autoscale)、监控报警、移动服务及网站服务商用、新的虚拟机镜像

    Windows Azure功能又更新了.此次更新包括1项重要更新和两个功能更新: 重要更新:云服务.网站支持按策略进行弹性伸缩 功能更新:两个预览版的服务(网站和移动)进入商用,虚拟机服务支持SQL ...

  3. Python-WXPY实现微信监控报警

    概述: 本文主要分享一下博主在学习wxpy 的过程中开发的一个小程序.博主在最近有一个监控报警的需求需要完成,然后刚好在学习wxpy 这个东西,因此很巧妙的将工作和学习联系在一起. 博文中主要使用到的 ...

  4. Kubernetes集群的监控报警策略最佳实践

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/M2l0ZgSsVc7r69eFdTj/article/details/79652064 本文为Kub ...

  5. linux下日志文件error监控报警脚本分享

    即对日志文件中的error进行监控,当日志文件中出现error关键字时,即可报警!(grep -i error 不区分大小写进行搜索"error"关键字,但是会将包含error大小 ...

  6. zabbix实现企业微信监控报警

    一.zabbix基本说明 简介:zabbix基于Web界面的分布式系统监控的企业级开源软件.可以监控各种系统与设备,网络参数,保证服务器设备安全运营:提供灵活的通知机制.如果检测到的指标不达标,就实现 ...

  7. Ganglia与Centreon整合构建智能化监控报警平台

    一.智能运维监控报警平台的组成 随着大数据时代的来临,运维工作的难度越来越大,每个运维人员都要面临不计其数的服务器和海量的数据,如何保证众多服务器和业务系统稳定高效地运行并尽量减少死机时间,成为考核运 ...

  8. 基于ELK 7.50搭建elastalert 监控报警和权限控制

    ELK+监控报警全步骤 需求: 公司要求对出在windows服务器上的日志进行日志分析并根据关键字进行报警,并配置kibana权限控制.下面为详细步骤 环境: centos 7.6 elk版本7.50 ...

  9. 基于Kibana的可视化监控报警插件sentinl入门

    sentinl是什么 Kibi/Kibana Alert & Reporting App Watching your data, 24/7/365 sentinl是一个免费的kibana预警与 ...

随机推荐

  1. IntelliJ Idea中的 Facets 与 Artifacts

    在公司和家用电脑上不同版本的idea做实验发现过程中会有些不同,遇到过一些问题,也正是这些问题使得自己能更进一步了解项目构建过程中的细节,特别记录一下.   这个是[温故知新] Java web 开发 ...

  2. Java高级特性——流

    以上就是这段时间学习完流的知识以后我的总结,.mmap文件可以去我的github上获取:https://github.com/xiaozhengyu/StudyNotes.git

  3. C#反射与特性(二):探究反射

    目录 1,反射的使用概述 2,获取 Type 在上一章中,我们探究了 C# 引入程序集的各种方法,这一章节笔者将探究 C# 中使用反射的各种操作和代码实践. 1,反射的使用概述 1.1 什么是反射 & ...

  4. JAVA字节码文件之结构

    开发工具:IEDA.JDK1.8.WinHex 一.字节码文件结构 源代码 package com.jalja.java.bytecode; /** * @Auther: XL * @Date: 20 ...

  5. win10开启我的第一个32位汇编程序

    遥想当年,上学期间,汇编程序,从未成功.今又试之,终成功,遂记录. Hello.asm文件如下: . .model flat,stdcall option casemap:none include w ...

  6. spring系列框架篇-承接各类型中小型项目-期待与您的长期合作!

    框架选型: 1.基本框架:springboot2.2+springcloud(Hoxton.M2)+nacos (所有公共模块全部使用 starter 方式依赖) 2.授权及权限:oauth2+jwt ...

  7. MinGW-W64下载与安装

    安装方案 1 下载安装包,MinGW-w64 - for 32 and 64 bit Windows,然后直接以管理员安装即可,但是这个方案在部分电脑可能不行,会提示 cannot download ...

  8. 06_URL参数截取

    1:如何获取URL传给子页面的参数: //获得参数(只对字母数字等有效,参数值为中文则不能传) function getQueryString(name) { var reg = new RegExp ...

  9. schedule of 2016-09-19~2016-09-25(Monday~Sunday)——1st semester of 2nd Grade

    2016/9/19 Monday 1.make ppt for today's group meeting 2.recite 100 words 3.review <图解机器学习>ch1~ ...

  10. C# 使用nuget.exe发布类库及更新类库

    前景:在开发学习阶段希望一些重复使用代码或者算法代码积累.能够在VS中下载安装方便使用. 准备工作: 1.Nuget登录账号(可 Microsoft 账号).Nuget官网 2.Nuget.exe程序 ...