nagios mysql php_自己编写Nagios 监控MySQL插件

主从监控插件编写:#!/bin/bash MYSQL=/usr/local/mysql/bin/mysql -uslave -pslave12345 -h127.0.0.1 -PVAR_LOG=/tmp/check_m

主从监控插件编写:

#!/bin/bash

MYSQL="/usr/local/mysql/bin/mysql -uslave -pslave12345 -h127.0.0.1 -P"

VAR_LOG=/tmp/check_mysql_status.log.$2 && >$VAR_LOG

function usage(){

cat

第一个参数是 -s 那么以是检查从模式, -m就是检查主模式 不能省略

第二个参数是数据库端口,如3308 3309,不能省略

mysql权限,需执行如下SQL:grant replication client,super on *.* to 'slave'@'127.0.0.1' identified by 'slave12345';

EOF

exit 1

}

function check_mysql_status(){

#echo $MYSQL $@

echo "show status;" | $MYSQL$@ | perl -p -e 's/\s+(\w+)/="$1"/g' >> $VAR_LOG

#echo "$mysql_status"

}

function check_mysql_slave_status(){

#echo $MYSQL $@

echo "show slave status\G" | $MYSQL$@ | perl -p -e 's/:\s(.*)$/="$1"/g; s/^\s+//g; s/^\*.*\*//;' >> $VAR_LOG

}

function check_slave_results(){

if [ "$Slave_IO_Running" == "Yes" ] && [ "$Slave_SQL_Running" == "Yes" ];then

if [ $tmp_code -ne 0 ] && [ $Seconds_Behind_Master -gt 100 ] ;then

code=2

elif [ $Seconds_Behind_Master -lt 50 ] ;then

code=0

else

code=1

fi

else

code=2

fi

}

if [ $# -le 0 ] || [ "$1" == "-h" ];then

usage

fi

if [ "$1" == "-s" ];then

#echo "检查从模式"

check_mysql_slave_status $2

fi

code=0

check_mysql_status $2

. $VAR_LOG

PER_SECOND_QUESTION=`echo "$Uptime $Queries" | awk '{printf ("%4.3f") ,$2/$1}END{if($2/$1<0.05) exit 0 ;else exit 1;}'`

tmp_code=$?

if [ -z $Uptime ];then

echo "$MYSQL $@ 连接失败,请检查服务" && exit 2

fi

if [ "$1" == "-s" ];then ##输出不同的信息

check_slave_results

printf "主库:$Master_Host:$Master_Port Uptime:$Uptime Threads:$Threads_running Questions:$Questions Slow_queries:$Slow_queries Open_tables:$Open_tables Queries per second avg:%s Slave_IO_Running:$Slave_IO_Running Slave_SQL_Running:$Slave_SQL_Running Seconds_Behind_Master:$Seconds_Behind_Master|Threads=$Threads_running Questions=$Questions Slowqueries=$Slow_queries Opens=$Opened_tables Opentables=$Open_tables Queriespersecondavg=%s BehindMaster=$Seconds_Behind_Master" $PER_SECOND_QUESTION $PER_SECOND_QUESTION

else ##输出不同的状态信息

printf "Uptime:$Uptime Threads:$Threads_running Questions:$Questions Slow_queries:$Slow_queries Open_tables:$Open_tables Queries per second avg:%s|Threads=$Threads_running Questions=$Questions Slowqueries=$Slow_queries Opens=$Opened_tables Opentables=$Open_tables Queriespersecondavg=%s" $PER_SECOND_QUESTION $PER_SECOND_QUESTION

fi

exit $code

mysql连接数监控:(监控mysql的最大连接数(最大连接数小于1000报警),和当前连接数 ,,可用连接数少于50报警)

#!/bin/bash

#MYSQL="/usr/local/mysql/bin/mysql -unagios -pmonitor_slave#status -h$3 -P"

MYSQL="/usr/local/mysql/bin/mysql -unagios -pmonitor_slave#status -h127.0.0.1 -P"

VAR_LOG=/tmp/check_mysql_status_con_$2.log && >$VAR_LOG

#Threads_con_log=/tmp/check_mysql_tread_conn.log.$2 && >$Threads_con_log

#Max_conn_log=/tmp/check_mysql_max_con.log.$2 && >$Max_conn_log

function usage(){

cat

first arg -s : monitor slave mode

-m : moitor master mode

second arg port: mysqld prot 3306 or 3307 or 3308 ...

mysql privilege :you neeed exec :grant replication client,super on *.* to 'slave'@'127.0.0.1' identified by 'slave12345';

EOF

exit 1

}

function check_mysql_status(){

#echo $MYSQL $@

echo "show status;" | $MYSQL$@ | perl -p -e 's/\s+(\w+)/="$1"/g' >> $VAR_LOG

#echo "$mysql_status"

}

function check_mysql_con_status(){

#echo $MYSQL $@

echo "show status like 'Threads_connected';" | $MYSQL$@ | perl -p -e 's/\s+(\w+)/="$1"/g' >> $VAR_LOG

echo "show variables like 'max_connections';" |$MYSQL$@ | perl -p -e 's/\s+(\w+)/="$1"/g' >> $VAR_LOG

#echo "$mysql_status"

}

function check_mysql_con_results(){

#echo "$max_connections,$Threads_connected"

Residue_conn=$(($max_connections-$Threads_connected))

#echo $Residue_conn

if [ $max_connections -lt 1000 ];then

if [ $Residue_conn -lt 50 ] ;then

code=2

else

code=1

fi

else

code=0

fi

}

if [ $# -le 0 ] || [ "$1" == "-h" ];then

usage

fi

code=0

check_mysql_status $2

check_mysql_con_status $2

. $VAR_LOG

Residue_conn=$max_connections

check_mysql_con_results $2

PER_SECOND_QUESTION=`echo "$Uptime $Queries" | awk '{printf ("%4.3f") ,$2/$1}END{if($2/$1<0.05) exit 0 ;else exit 1;}'`

tmp_code=$?

#

if [ -z $Uptime ];then

echo "$MYSQL $@ Connect Failed,Please check!" && exit 2

fi

#

printf "Uptime:$Uptime Threads_connected:$Threads_connected Max_connections:$max_connections Residue_connectios:$Residue_conn Open_tables:$Open_tables Queries per second avg:%s|Threads=$Threads_running Questions=$Questions Slowqueries=$Slow_queries Opens=$Opened_tables Opentables=$Open_tables Queriespersecondavg=%s" $PER_SECOND_QUESTION $PER_SECOND_QUESTION

#

exit $code

Nagios 的详细介绍:请点这里

Nagios 的下载地址:请点这里

相关阅读:

网络监控器Nagios全攻略

Nagios搭建与配置详解

Nginx环境下构建Nagios监控平台

在RHEL5.3上配置基本的Nagios系统(使用Nagios-3.1.2)

CentOS 5.5+Nginx+Nagios监控端和被控端安装配置指南

Ubuntu 13.10 Server 安装 Nagios Core 网络监控运用

logo.gif

f68f2add0b68e4f9810432fce46917b7.png

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值