MySQL慢日志监控脚本
#!/bin/bash
# 本脚本用来在指定频率内监控 MySQL 慢日志的变化,并在发生增长时及时报警
MON_FILE="$2" # 指定所要监控的脚本路径
SEC=60 # 指定所要监控的频率,即间隔多久去查看一次
MON_POINT_FILE=/tmp/mon_mysql_slow.point # 指定MySQL慢日志的监控点存放的路径
DIFF_MON_FILE=/tmp/mon_mysql_slow.log # 指定在监控频率内增加的MySQL慢日志信息存放路径
ADMIN_MAIL=xxxxxx@qq.com # 指定发送给哪个管理员
function USAGE {
echo -e "\033[31m脚本名称: \033[37m"
echo " $0"
echo -e "\033[31m语法结构: \033[37m"
echo " $0 {start|stop|restart} MySQL慢日志文件路径"
echo -e "\033[31m使用范例: \033[37m"
echo " $0 start /usr/local/mysql/log/mysql_slow.log"
echo " $0 stop"
echo " $0 restart /usr/local/mysql/log/mysql_slow.log"
echo -e "\033[31m注意事项: \033[37m"
echo " 1. 除了stop操作,start和restart操作时,\$2 参数不能为空"
echo " 2. \$2 参数指定的文件必须存在"
exit 2
}
function start {
echo "MySQL慢日志监控进程已经启动,监控文件为 $MON_FILE ,监控频率为 ${SEC}s一次."
while :
do
[ -f $MON_POINT_FILE ] || echo 0 > $MON_POINT_FILE
NEW_POINT=$(awk 'END{print NR}' $MON_FILE)
OLD_POINT=$(<$MON_POINT_FILE)
#[[ -z $OLD_POINT ]]&&OLD_POINT=0
SUM_POINT=$(($NEW_POINT-$OLD_POINT))
#SUM_POINT=${SUM_POINT0#-}
if [ $SUM_POINT == 0 ] ; then
continue
else
sed -n "/.*/{${OLD_POINT},${NEW_POINT}p}" $MON_FILE > $DIFF_MON_FILE
if [[ -s $DIFF_MON_FILE ]];then
SUM_POINT=$[$SUM_POINT+1]
sed -i '1i 本次新增慢日志 '$SUM_POINT' 条' $DIFF_MON_FILE
mail -s "[警告] 服务器 $(hostname) 产生 MySQL 慢日志 $SUM_POINT 条" $ADMIN_MAIL < $DIFF_MON_FILE
echo "$(<$DIFF_MON_FILE)"
> $DIFF_MON_FILE
echo $NEW_POINT > $MON_POINT_FILE
fi
fi
sleep ${SEC}s
done
}
function stop {
if [[ -n `ps -ef|awk '$0~"mon_mysql_slow_log.sh"{print $2}'` ]];
then
for PID in `ps -ef|awk '$0~"mon_mysql_slow_log.sh"{print $2}'`;
do
[[ $PID != $$ ]] && kill -9 $PID >& /dev/null
done
else
echo '目前暂无MySQL慢日志监控进程'
exit 0
fi
echo 'MySQL慢日志监控进程已经停止运行'
}
function restart {
stop
start &
}
if [[ $1 == stop ]]
then
:
else
[[ $2 < 3 ]] && USAGE
[[ ! -f $2 ]] && USAGE
fi
case $1 in
start)
start &
;;
stop)
stop
;;
restart)
MON_FILE=$2
restart
;;
*)
USAGE
;;
esac
MySQL慢日志监控脚本相关推荐
- 更新MySQL复制 自动监控脚本
具体代码请见: MySQL复制 自动监控脚本 增加了判断slave落后于master多少秒的机制. 本文出自 "MySQL中文网"博客 http://www.imysql.cn/ ...
- mysql 慢日志报警_一则MySQL慢日志监控误报的问题分析
之前因为各种原因,有些报警没有引起重视,最近放假马上排除了一些潜在的人为原因,发现数据库的慢日志报警有些奇怪,主要表现是慢日志报警不属实,收到报警的即时通信提醒后,隔一会去数据库里面去排查,发现慢日志 ...
- 整理全网Shell脚本合集,Java脚本,运维脚本,告警脚本,监控脚本,日志脚本,docker脚本等---------持续更新!
整理全网Shell脚本合集,Java脚本,运维脚本,告警脚本,监控脚本,日志脚本,docker脚本等---------持续更新! 一.ffmpeg脚本 1.1 打开进程,并判断进程数量 1.2 关闭进 ...
- mysql二进制日志管理_MYSQL二进制日志管理脚本
MYSQL二进制日志管理脚本脚本原理是每小时对进行flush生成新的二进制日志,将二进制日志备份至NFS,并压缩存放:#!/bin/bash#Purpose:管理二进制日志,每小时刷新二进制日志,并将 ...
- mysql审计日志归档
mysql审计日志归档 1.开启审计日志 # 启动审计,在mysql中执行命令: set global general_log=on; set global log_timestamps=SYSTEM ...
- linux 监控mysql脚本_Linux系统MySQL主从同步监控shell脚本
操作系统:CentOS系统 目的:定时监控MySQL数据库主从是否同步,如果不同步,记录故障时间,并执行命令使主从恢复同步状态 1.创建脚本文件 vi /home/crontab/check_mysq ...
- mysql日志监控 zabbix_zabbix日常监控项mysql(七)
参考文档: 先简单搭建mysql服务,用于后续zabbix监控来用 centos7.4客户端安装agent #关闭SElinux(临时关闭) [root@db01~]# getenforce Enfo ...
- mysql isnu_mysql和nginx服务是否正常监控脚本
一.监控web服务器和mysql方法 1.监控端口(nginx也相同) 1.1本地监控 netstat -tunlp|grep 3306|wc -l ss -tunlp|grep 3306|wc -l ...
- 简单分析MySQL 一则慢日志监控误报问题
这篇文章主要介绍了MySQL 一则慢日志监控误报的问题分析与解决,帮助大家更好的理解和使用MySQL,感兴趣的朋友可以了解下 之前因为各种原因,有些报警没有引起重视,最近放假马上排除了一些潜在的人为原 ...
最新文章
- 常见字符串和数值间得转换
- 【SpringCloud】Ribbon-实例
- Discuz! X3.2新增管理员无法登录后台的解决办法
- 达梦数据库修改字段长度_DM7 达梦数据库 序列 和 自增列 说明
- 如何修改物料主数据的利润中心
- mysql权限create细化_mysql权限精细化分配-阿里云开发者社区
- c++builder tadoquery存储过程_Electron桌面应用程序从创建项目、启动项目到打包程序的详细过程...
- 案例 项目经理评分 c# 1613922661
- Docker启动一个Centos镜像
- 线性电源与开关电源的区别
- SpringBoot工作机制
- Xcode 9以下(xip) 官方直接下载地址(离线下载)
- 第044篇:VBA之三种单元格引用小结(Range、Cells、[单元格区域])
- 【计算机毕业设计】双月湾亲子高端酒店网站
- 南京地铁6号线双龙街出入口线区间盾构段开工
- 卫青和霍去病:汉匈战争史最天才的两名战将
- win10照片应用打不开的解决方法
- thinkphp创建临时表
- iOS - 技术储备列表
- Windows独享主机网站访问缓慢的原因和解决方法