自己编写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 `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 网络监控运用

linux

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1872781.html

(0)
上一篇 2025年2月22日 09:03:13
下一篇 2025年2月22日 09:03:27

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论