序言:1、编写事务监控脚本#!/bin/bashST_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_schema.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) 个(TIMEDIFF(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里面添加事务监控命令:然后重新加载nagios5,去nagios主监控界面查看监控效果 正常监控效果:严重监控效果: