序言:
1、编写事务监控脚本
#!/bin/bash
ST_OK=0
ST_WR=1
ST_CR=2
ST_UK 上的 RUNNING TRANSACTION =3
TIME_TRX=10
# 提示信息
print_help() {
echo "$PROGNAME -w INT -c INT"
echo "选项:"
echo "-w/--警告)"
echo "设置警告编号"
echo "-c/--ritic)"
echo " 设置 io 的临界级别"
退出 $ST_UK
}
while test -n "$1";做
案例“$1”在
-帮助|-h)
print_help
> 打印帮助 退出 $ST_UK
;;
--警告|-w)
警告=$2
转变
;;
--关键|-c)
关键=$2
转变
;;
*)
echo "未知参数: $1"
print_help
> 打印帮助 退出 $ST_UK
;;
esac
> esac 移位
完成
get_wcdiff() {
; 如果 [ ! -z "$警告" -a ! -z“$关键”]
然后
wclvls=1
>
if [ ${警告} -gt ${严重} ]
然后
wcdiff=1
> wcdiff=1
菲
埃利夫[! -z“$警告”-a -z“$关键”]
然后
wcdiff=2
> wcdiff=2
elif [ -z "$警告" -a ! -z“$关键”]
然后
wcdiff=3
> wcdiff=3
fi
}
#脚本判断
val_wcdiff() {
; if [ "$wcdiff" = 1 ]
; 然后
echo "请调整您的警告/严重阈值。警告必须低于严重级别!"
退出 $ST_UK
elif [ "$wcdiff" = 2 ]
然后
echo "当您想使用警告/临界阈值时,还请设置一个临界值!"
退出 $ST_UK
elif [ "$wcdiff" = 3 ]
然后
echo "当您想使用警告/严重阈值时,还请设置一个警告值!"
退出 $ST_UK
fi
}
get_wcdiff
val_wcdiff
>#统计mysql的事务中最大运行时间
max_over_time=`/usr/local/mysql/bin/mysql --user=nagios --password="nagiosq@xxx" -NS /usr/local/mysql/mysql.sock -e " SELECT TIME_TO_SEC(TIMEDIFF(NOW(),t.trx_started)) FROM information_schem
a.INNODB_TRX t WHERE TIME_TO_SEC(TIMEDIFF(NOW(),t.trx_started))>$TIME_TRX ORDER BY TIME_TO_SEC(TIMEDIFF(NOW) (),t.trx_started)) DESC 限制 1;" |awk '{print $1}'`
#如果当前没有RUNNING的事务,则直接赋值为0,惨下面if判断错误
if [ ! -n "$max_over_time" ];then max_over_time=0
fi
#获取当前所以阻塞的事务数量
num_trx=`/ usr/local/mysql/bin/mysql --user=nagios --password="nagiosq@xxx" -NS /usr/local/mysql/mysql.sock -e "从 information_schema.INNODB_TRX t WHERE TIME_TO_SEC 中选择 COUNT(1) 个(TIMEDIF
F(NOW(),t.trx_started))>$TIME_TRX;" |awk '{打印$1}'`
2,在nagios客户端添加脚本监控
先测试下脚本
[root@wgq_idc_dbm_3_61 binlog]#
在nrpe.cfg里面添加监控命令
4,在nagios主监控服务器上面添加配置选项
先去nagios服务器上面check一下
在services.cfg里面添加事务监控选项:
在commands.cnf里面添加事务监控命令:
然后重新加载nagios
5,去nagios主监控界面查看监控效果
正常监控效果:严重监控效果: