美文网首页
日志关键字邮件报警脚本

日志关键字邮件报警脚本

作者: 小尛酒窝 | 来源:发表于2018-07-18 17:38 被阅读0次

    最近写了一个日志监控脚本,准备用于线上系统作监控,分享下。

    #!/bin/bash
    #此脚本用于对日志文件中的关键字做提取检测并做相应的邮件报警。
    #可用使用crontab -e 调用,作为系统周期任务脚本
    #Author:Charles
    
    #Mail_user,Mail_user2 为报警邮件收件人
    Mail_user=xxxxxxxx@qq.com
    Mail_user2=xxxxxxx@sina.cn
    
    #Src_log为需要grep错误日志的日志保存路径
    #Error_log为grep得到的错误日志的存放路径
    Src_log=/tmp/testlog.log.`date +%F`.log
    Error_log=/tmp/Logcheck_Error.log
    
    #Now_line目前日志文件所包含的行数,Old_line为上一次检测的行数
    #/tmp/Log_check_line_number 此文件用于保存当前日志行数,以便下次检测时作比较
    Now_line=`wc -l ${Src_log} | cut -d' ' -f1`
    if [ -e /tmp/Log_check_line_number ];then
        Old_line=`cat /tmp/Log_check_line_number`
        
    else
        touch /tmp/Log_check_line_number
        Old_line=$[ ${Now_line} - 1 ]
    fi
    
    echo ${Now_line}>/tmp/Log_check_line_number
    
    #抓取的关键字
    Keyword="ERROR"
    Keyword2="Exception"
    
    #日志检测函数,将检测到的错误日志抓取保存到指定路径
    Log_error_check() {
        if [ ! -e ${Error_log} ];then
            touch ${Error_log}
        fi  
        if [ -f ${Src_log} ];then
            sed -n "${Old_line},${Now_line}p" ${Src_log} | grep -i -E "${Keyword}|${Keyword2}" > ${Error_log}
            sleep 15
            if [ -s ${Error_log} ];then
                EMAIL
            else    
                exit    
            fi
        fi
    }
    
    #邮件报警函数,将检测到的错误数量及内容发送给指定的收件人
    EMAIL() {
        Error_Number=`grep -i -E "${Keyword}|${Keyword2}" ${Error_log} | wc -l `            
        mail -s "`date +%F\ %H:%M` Alert!${Error_Number} errors occurred in ${Src_log}" -c ${Mail_user} ${Mail_user2}  < ${Error_log}
    }
    
    #调用日志检查函数
    Log_error_check
    
    

    相关文章

      网友评论

          本文标题:日志关键字邮件报警脚本

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