• [shell] check_slave.sh mysql主从监控复制的脚本


    #!/bin/bash
    # auth : yoncan@qq.com
    # date : 2013-11-05
    
    STATUS_OK=0
    STATUS_WARN=1
    STATUS_CRITICAL=2
    STATUS_UNKNOWN=3
    export PATH=$PATH:/usr/local/bin:/usr/bin:/bin
    _tmp_file=`mktemp /tmp/XXXXXXX`
    
    # ########################################################################
    # Set up default args
    # ########################################################################
    _default_user="ptcheck"
    _default_passwd="you_password"
    _default_host="127.0.0.1"
    _default_port="3306"
    
    
    # ########################################################################
    # Get Help
    # ########################################################################
    if [ "${1}" = "--help" -o "${#}" = "0" ];
    then
        echo "$0 -u <username> -p <password> -h <host> -P <port>"
        exit $STATUS_WARN
    fi
    
    # ########################################################################
    # Get Options
    # ########################################################################
    while getopts :u:p:h:P: OPT
    do
        case "$OPT" in
            u)
                _user=$OPTARG ;;
            p)
                _pass=$OPTARG ;;
            h)
                _host=$OPTARG ;;
            P)
                _port=$OPTARG ;;
            ?)
                echo 'unknow options' && exit ;;
        esac 
    done
    _user=${_user:-"$_default_user"}
    _pass=${_pass:-"$_default_passwd"}
    _host=${_host:-"$_default_host"}
    _port=${_port:-"$_default_port"}
    
    
    # ########################################################################
    # Check MySQL Running?
    # ########################################################################
    _check_mysql_running() {
    _run_status=`mysqladmin -u${_user} -p${_pass} -h${_host} -P${_port}  ping 2>/dev/null`
    if [ "${_run_status}" != "mysqld is alive" ];then
        echo 'Crit: mysql is not running..'
        exit $STATUS_CRITICAL
    fi
    }
    
    # ########################################################################
    # Get MySQL Running Status
    # ########################################################################
    _get_slave_status() {
    mysql -u${_user} -p${_pass} -h${_host} -P${_port} -e "show slave statusG" >${_tmp_file}
    if [ ! -s ${_tmp_file} ];then
        echo "Unknow: get Slave status Unknow"
        exit $STATUS_UNKNOWN
    fi
    }
    # ########################################################################
    # Check MySQL Running Status
    # ########################################################################
    _check_slave_status(){
    _slave_status=`awk -F '[ ]+|:' '/Slave.*Running/{printf("%s",$NF)}' $_tmp_file`
    if [ "$_slave_status" == "YesYes" ];then
        echo "OK: MySQL Slave Running OK"
        exit $STATUS_OK
    elif [ "$_slave_status" == "NoNo" ];then
        echo "Crit: MySQL Slave Not Running"
        exit $STATUS_CRITICAL    
    elif [ "$_slave_status" == "YesNo" ];then
        echo "Warn: MySQL slave_sql_thread Not Running"
        exit $STATUS_WARN
    elif [ "$_slave_status" == "NoYes" ];then
        echo "Warn: MySQL slave_io_thread Not Running"
        exit $STATUS_WARN
    else
        echo "Unknown: MySQL slave status is Unknown"
        exit $STATUS_UNKNOWN
    fi
    ## clear tmp file
    rm -f $_tmp_file
    }
    
    # ########################################################################
    # Main
    # ########################################################################
    
    _main(){
    _check_mysql_running
    _get_slave_status
    _check_slave_status
    }
    
    _main

    =====
    这是一个监控mysql主从复制的脚本,用于定义到nagios监控所用,定义的形式如下:

    # vi commands.cfg
    
    define command{
    command_name   check_mysql_slave
    command_line   $USER1$/check_slave.sh -h $HOSTADDRESS$
    }
    
    OR
    
    define command{ command_name   check_mysql_slave command_line   $USER1$
    /check_slave.sh -u ptcheck -p yangcan -h $HOSTADDRESS$ -P $ARG1$ }

    ## 在服务中添加监控 # vi localhost.cfg

    define service{
    use               general-service
    host_name           127.0.0.1
    service_description     Server - Mysql Replication
    check_command         check_mysql_slave
    }
    
    OR
    
    define service{
    use               general-service
    host_name            127.0.0.1
    service_description      Server - Mysql Replication
    check_command         check_mysql_slave!3308
    }

    # 下载地址

    https://github.com/yoncan/share/blob/master/check_slave.sh

  • 相关阅读:
    题解 P2280 【[HNOI2003]激光炸弹】
    线段树求逆序对
    题解 P3378 【【模板】堆】
    动态规划-最大算式 蓝桥杯ALGO-116
    动态规划-树形动态规划-结点选择
    Trie树(字典树)-题解 P2580 【于是他错误的点名开始了】
    清北学堂-DAY2-数论专题-中国剩余定理(CRT)
    听课笔记--DP--Authentication Failed
    听课笔记--DP--最大子矩阵和
    多媒体基础
  • 原文地址:https://www.cnblogs.com/yoncan/p/3408922.html
Copyright © 2020-2023  润新知