主从监控插件编写:#!/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 `basename $0` need at least value: `basename $0` -[s|m] port
第一个参数是 -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 statusg” | $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/$1tmp_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 `basename $0` need at least value: `basename $0` -[s|m] port
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/$1tmp_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 网络监控运用
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1872781.html