zoukankan      html  css  js  c++  java
  • [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

  • 相关阅读:
    [leetcode]N-Queens II
    基于Linux的智能家居的设计(4)
    eclipse集成Python开发环境
    创业三年,离开公司,请各位看一下我的简历,指点一下未来的路
    Jquery实现选项卡功能
    R语言中两个数组(或向量)的外积怎样计算
    《Java程序猿面试笔试宝典》之组合与继承有什么差别
    Sublime Text3打造U盘便携Lua IDE
    php Laravel 框架之建立后台目录
    树的同构(25 分)
  • 原文地址:https://www.cnblogs.com/yoncan/p/3408922.html
Copyright © 2011-2022 走看看