美文网首页
报警shell脚本浅写

报警shell脚本浅写

作者: fly先森 | 来源:发表于2019-01-18 11:41 被阅读0次

    在企业的大数据系统中,会存在许许多多的shell监控脚本对集群的各种指标进行监控和报警。

    1.编写mysql数据库监控

                #!/bin/bash
                #mysql.sh
                          #这一行是连接数据库的操作
                nc -e 3 localhost 3306 &>/dev/null
    
                         #$?是上一行代码操作成功与否,成功不等于1,否则等于0
                if [ $? -eq 0 ];then
    
                        str="mysql server status Running!!!"
    
                else
    
                        str="mysql server status Shuting!!!"
    
                fi
    
                echo $str | mail -s 'mysql server' admin@g.cn
    
    

    2.编写Disk硬盘空间监控

                #!/bin/bash
                #disk.sh                         
                          #df查看磁盘占用情况  NR==7是第七行 每一行默认空格划分所以$5就是占用率
                ds=`df |awk '{if(NR==7){print int($5)}}'`   
    
                if [ $ds -lt 45 ];then
    
                       str="disk space is less than 45%!!!"
    
                else
    
                       str="disk space is greater than 45%!!!"
    
                fi
    
                echo $str | mail -s 'linux server disk space' admin@g.cn
    

    3.编写mem(内存)空间监控脚本

                #!/bin/bash
    
                #mem.sh
    
                mem=`free -m |awk '{if(NR==2){printf("%.0f\n",(int($3)/int($2))*100)}}'` //四舍五入取整
    
                if [ $mem -lt 45 ];then //表达式内为整数表达式,不能用浮点型
    
                       str="mem space is less than 45%,Achieve $mem%!!!"
    
                else
    
                       str="mem space is greater than 45%,Achieve $mem%!!!"   
    
                fi
    
                echo $str | mail -s 'linux server mem space' admin@g.cn
    

    4、报警脚本重启生效

              1)设置脚本权限
    
                chmod 755 /etc/init.d/mon.sh    //mon.sh:将所有脚本放到这个脚本中,或者调用其他脚本,发送一封邮件即可
    
              2)crontab -e                //任务计划
    
                */5****bash /etc/init.d/mon.sh
    
                如:10 13 *** /mnt/monitor.dh      //每天的13:10执行这个代码
    
              3)tail -f /var/log/cron
    
              4)邮件报警要提前测试准备邮件系统是否正常工作
    

    上述几个是网上的一些小demo,也是报警脚本的一个小入门,下面贴一份在某大型互联网的部分代码(部分公司信息已手动去除):

    unction hdfs() {
        
        JAVA_HOME="/home/work/software/java"
        HADOOP_HOME="/home/work/software/hadoop"
        
        PROCESS=`${JAVA_HOME}/bin/jps | grep -iE "datanode|avatardatanode" | wc -l`   //拿到相关的进程数
        PORT=`/bin/netstat -nl | grep -E "50020|50010" | wc -l`  //拿到相关的端口数
        
        if [[ $PROCESS -gt 0 ]] || [[ $PORT -gt 0 ]]
        then
            echo "Normal."
    
        elif [[ "$PROCESS" == '0' ]] || [[ "$PORT" == '0' ]]
        then
            echo "auto restart service."
            if [ -f "${HADOOP_HOME}/conf/hdfs-site.xml" ]
            then
                is_master="`grep image $HADOOP_HOME/conf/hdfs-site.xml`"
                if [ "$is_master" == '' ]
                then
                    is_dn=`/usr/bin/curl --user ***:**** -d "interface=hdfs" -d "ip=$ip_list" $ReportCenter -s`
                    if [ "$is_dn" == 'datanode' ]
                    then
                        hdfs_dn_type="`grep avatar ${HADOOP_HOME}/conf/hdfs-site.xml`"
                        if [ "$hdfs_dn_type" == '' ]
                        then
                            su - work -c "~/software/hadoop/bin/hadoop-daemon.sh start datanode" //su -work -c  代表切换到work用户并执行命令
                        else
                            su - work -c "~/software/hadoop/bin/hadoop-daemon.sh start avatardatanode"
                        fi
                    fi
                else
                    echo "Master Node!"
                fi
            fi
        else
            reportAlarm hdfs statuserror
        fi
    }
    
    hdfs
    

    其实监控脚本本质还是对一些linux命令的掌握以及根据公司的业务需求对集群的一些指标进行实时查询,从而达到业务集群的稳定性,当然编写脚本的时候请保持每行空格对齐,代码的美观可以让我们身心愉悦( ̄▽ ̄)/

    相关文章

      网友评论

          本文标题:报警shell脚本浅写

          本文链接:https://www.haomeiwen.com/subject/bbngdqtx.html