MGR监控报警
一、报警思路
- 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监控报警的更多相关文章
- SQL Server监控报警架构_如何添加报警
一.数据库邮件报警介绍 数据库邮件是从SQL Server数据库引擎发送电子邮件企业解决方案,使用简单传输协议(SMTP)发送邮件.发送邮件进程与数据库的进程隔离,因此可不用担心影响数据库服务器. 数 ...
- Windows Azure功能更新:弹性伸缩(autoscale)、监控报警、移动服务及网站服务商用、新的虚拟机镜像
Windows Azure功能又更新了.此次更新包括1项重要更新和两个功能更新: 重要更新:云服务.网站支持按策略进行弹性伸缩 功能更新:两个预览版的服务(网站和移动)进入商用,虚拟机服务支持SQL ...
- Python-WXPY实现微信监控报警
概述: 本文主要分享一下博主在学习wxpy 的过程中开发的一个小程序.博主在最近有一个监控报警的需求需要完成,然后刚好在学习wxpy 这个东西,因此很巧妙的将工作和学习联系在一起. 博文中主要使用到的 ...
- Kubernetes集群的监控报警策略最佳实践
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/M2l0ZgSsVc7r69eFdTj/article/details/79652064 本文为Kub ...
- linux下日志文件error监控报警脚本分享
即对日志文件中的error进行监控,当日志文件中出现error关键字时,即可报警!(grep -i error 不区分大小写进行搜索"error"关键字,但是会将包含error大小 ...
- zabbix实现企业微信监控报警
一.zabbix基本说明 简介:zabbix基于Web界面的分布式系统监控的企业级开源软件.可以监控各种系统与设备,网络参数,保证服务器设备安全运营:提供灵活的通知机制.如果检测到的指标不达标,就实现 ...
- Ganglia与Centreon整合构建智能化监控报警平台
一.智能运维监控报警平台的组成 随着大数据时代的来临,运维工作的难度越来越大,每个运维人员都要面临不计其数的服务器和海量的数据,如何保证众多服务器和业务系统稳定高效地运行并尽量减少死机时间,成为考核运 ...
- 基于ELK 7.50搭建elastalert 监控报警和权限控制
ELK+监控报警全步骤 需求: 公司要求对出在windows服务器上的日志进行日志分析并根据关键字进行报警,并配置kibana权限控制.下面为详细步骤 环境: centos 7.6 elk版本7.50 ...
- 基于Kibana的可视化监控报警插件sentinl入门
sentinl是什么 Kibi/Kibana Alert & Reporting App Watching your data, 24/7/365 sentinl是一个免费的kibana预警与 ...
随机推荐
- java面试-泛型
1.什么是泛型?泛型有什么作用? 泛型就是参数化类型,也就是所操作的数据类型被指定为一个参数.这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类.泛型接口.泛型方法. 在泛型出现之前, ...
- 0018 CSS注释(简单)
CSS注释规则: /* 需要注释的内容 */ 进行注释的,即在需要注释的内容前使用 "/*" 标记开始注释,在内容的结尾使用 "*/"结束. 例如: p { / ...
- 掌握这些,ArrayList就不用担心了!
关于ArrayList的学习 ArrayList属于Java基础知识,面试中会经常问到,所以作为一个Java从业者,它是你不得不掌握的一个知识点.
- 如何修改eclipse中Dynamic web module的 version
我们直接在eclipse中修改Dynamic Web Module的话会报错,改不了的 所以我们可以找到项目文件中的.setting文件下的org.eclipse.wst.common.project ...
- 「CH2401」送礼物 解题报告
CH2401 送礼物 描述 作为惩罚,GY被遣送去帮助某神牛给女生送礼物(GY:貌似是个好差事)但是在GY看到礼物之后,他就不这么认为了.某神牛有N个礼物,且异常沉重,但是GY的力气也异常的大(-_- ...
- DNS服务器红帽5.4搭建图文教程!!!
DNS服务器 挂载光盘 mount 查看光盘所在位置 mount -t iso9660 设备目录 /mnt 表示挂载 软件包安装 所有软件包都在Server目录下 rpm -ivh /mnt/Serv ...
- 1084 外观数列 (20 分)C语言
外观数列是指具有以下特点的整数序列: d, d1, d111, d113, d11231, d112213111, ... 它从不等于 1 的数字 d 开始,序列的第 n+1 项是对第 n 项的描述. ...
- shiro整合springmvc
说明 代码及部分相关资料根据慕课网Mark老师的视频进行整理 其他资料: shiro官网 流程 配置 1) 配置web.xml整合shiro 把shiro整合到springMVC实质上是在we ...
- schedule of 2016-09-12~2016-09-18(Monday~Sunday)——1st semester of 2nd Grade
2016/9/12 Monday 1.send present to Teacher Wei&hu 2.make ppt for 1st database 2.0 meeting for al ...
- Android Studio build不显示Generate signed apk问题
如果是刚装的AS,那么新建一个项目,进入项目后,会发现build选项卡缺了一些选项,同时底部sync在转圈圈,其实是AS在自动下载gradle,也许还在下载build-tools,我等了11分钟才结束 ...