日志文件ERROR监控报警
16lz
2021-04-13
即对日志文件中的error进行监控,当日志文件中出现error关键字时,即可报警!(grep -i error 不区分大小写进行搜索"error"关键字,但是会将包含error大小写字符的单词搜索出来)
1)第一类日志
在每天的日志目录下生产的error日志,此日志文件每天都会自动生成,里面有没有error日志内容不一定,日志内容写入不频繁,日志文件比较小。
举例说明:
[root@fk-databus01 ~]# ll /data/log/sedsb/20180628/DEJ_0001_error_20180628.0.log-rw-rw-r-- 1 zquser zquser 63059 Jun 28 15:32 /data/log/sedsb/20180628/DEJ_0001_error_20180628.0.log 采用sendemail发送告警邮件,sendemail安装参考:http://www.cnblogs.com/kevingrace/p/5961861.html 监控脚本路径:[root@fk-databus01 ~]# cd /opt/log_error_script/[root@fk-databus01 log_error_script]# lltotal 20-rw-r--r-- 1 root root 3782 Jun 29 12:13 DEJ_0001_error.log-rwxr-xr-x 1 root root 4274 Jun 29 11:38 prcc_log_error.sh-rwxr-xr-x 1 root root 1142 Feb 13 10:51 sendemail.sh 监控脚本内容[root@fk-databus01 log_error_script]# cat prcc_log_error.sh#!/bin/shERROR_LOG=`/bin/ls /data/log/sedsb/$(date +%Y%m%d)/DEJ_0001_error*`ERROR_NEW_LOG=/opt/log_error_script/DEJ_0001_error.logDATE=`date +%Y年%m月%d日%H时%M分%S秒`HOST=`/bin/hostname`IP=`/sbin/ifconfig|grep "inet addr"|grep "Bcast"|cut -d":" -f2|awk -F" " '{print $1}'`ERROR_MESSAGE=$(/bin/grep -A20 "$(grep "ERROR" $ERROR_LOG|tail -1|awk '{print $1,$2,$3,$4}')" $ERROR_LOG) DIR=/data/log/sedsb/$(date +%Y%m%d)FILE=/data/log/sedsb/$(date +%Y%m%d)/DEJ_0001_error_$(date +%Y%m%d).0.log if [ ! -d $DIR ];then /bin/mkdir $DIRfi if [ ! -f $FILE ];then /bin/touch $FILEfi /bin/chown -R zquser.zquser $DIRsleep 3 if [ ! -f $ERROR_NEW_LOG ];then/bin/touch $ERROR_NEW_LOGfi NUM1=$(/bin/cat $ERROR_LOG|wc -l)NUM2=$(/bin/cat $ERROR_NEW_LOG|wc -l) if [ -f $ERROR_LOG ] && [ $NUM1 -ne 0 ] && [ $NUM2 -eq 0 ];then/bin/bash /opt/log_error_script/sendemail.sh wangshibo@kevin.com "风控系统${HOSTNAME}机器prcc服务日志的error监控" "告警主机:${HOSTNAME} \n告警IP:${IP} \n告警时间:${DATE} \n告警等级:严重,抓紧解决啊! \n告警人员:王士博 \n告警详情:prcc服务日志中出现error了! \n告警日志文件:${ERROR_LOG} \n当前状态: PROBLEM \n \nerror信息:\n$ERROR_MESSAGE"/bin/cat $ERROR_LOG > $ERROR_NEW_LOGfi /usr/bin/cmp $ERROR_LOG $ERROR_NEW_LOG >/dev/null 2>&1if [ $? -ne 0 ];then/bin/bash /opt/log_error_script/sendemail.sh wangshibo@kevin.com "风控系统${HOSTNAME}机器prcc服务日志的error监控" "告警主机:${HOSTNAME} \n告警IP:${IP} \n告警时间:${DATE} \n告警等级:严重,抓紧解决啊! \n告警人员:王士博 \n告警详情:prcc服务日志中出现error了! \n告警日志文件:${ERROR_LOG} \n当前状态: PROBLEM \n \nerror信息:\n$ERROR_MESSAGE"/bin/cat $ERROR_LOG > $ERROR_NEW_LOGfi 结合crontab进行定时监控(每15秒执行一次)[root@fk-databus01 ~]# crontab -l#监控pcrr日志的error* * * * * /bin/bash -x /opt/log_error_script/prcc_log_error.sh >/dev/null 2>&1* * * * * sleep 15;/bin/bash -x /opt/log_error_script/prcc_log_error.sh >/dev/null 2>&1* * * * * sleep 30;/bin/bash -x /opt/log_error_script/prcc_log_error.sh >/dev/null 2>&1* * * * * sleep 45;/bin/bash -x /opt/log_error_script/prcc_log_error.sh >/dev/null 2>&1 ==================================================================================针对上面脚本中的某些变量说明[root@fk-databus01 ~]# /bin/ls /data/log/sedsb/$(date +%Y%m%d)/DEJ_0001_error*/data/log/sedsb/20180629/DEJ_0001_error_20180629.0.log [root@fk-databus01 ~]# grep "ERROR" /data/log/sedsb/20180629/DEJ_0001_error_20180629.0.logERROR DEJ 2018-06-29 12:13:29.191 [pool-4-thread-10] n.s.p.r.thread.OuterCheThdInterface - cx201806291213288440016车300接口异常!ERROR DEJ 2018-06-29 12:13:29.196 [nioEventLoopGroup-3-12] n.s.p.r.c.MessageControllerImpl - cx201806291213288440016: [root@fk-databus01 ~]# grep "ERROR" /data/log/sedsb/20180629/DEJ_0001_error_20180629.0.log |tail -1|awk '{print $1,$2,$3,$4}'ERROR DEJ 2018-06-29 12:13:29.196 [root@fk-databus01 ~]# /bin/grep -A20 "$(grep "ERROR" /data/log/sedsb/20180629/DEJ_0001_error_20180629.0.log |tail -1|awk '{print $1,$2,$3,$4}')" /data/log/sedsb/20180629/DEJ_0001_error_20180629.0.logERROR DEJ 2018-06-29 12:13:29.196 [nioEventLoopGroup-3-12] n.s.p.r.c.MessageControllerImpl - cx201806291213288440016:net.sinocredit.pre.rcc.utils.exception.OuterDataException: 外部数据:cheFixPrice:mile里程 is null; at net.sinocredit.pre.rcc.datafactory.OuterDataProcess.execute(OuterDataProcess.java:51) at net.sinocredit.pre.rcc.datafactory.OuterDataProcess.execute(OuterDataProcess.java:23) at net.sinocredit.pre.rcc.service.getOtherDataService.MessageServiceImpl.getOrderData(MessageServiceImpl.java:34) at net.sinocredit.pre.rcc.controller.MessageControllerImpl.divMessage(MessageControllerImpl.java:110) at net.sinocredit.pre.rcc.handler.ServerHandler.channelRead(ServerHandler.java:28) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:373) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:351) at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:373) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:351) at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:373) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:351) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:373)
报警邮件效果如下:
2)第二类日志
此日志是固定文件,日志内容写入频繁,日志文件比较大。对于此文件的监控,通过采用tail -1000方式获取日志文件的最新1000行的方式进行error监控!
举例说明:
[root@fk-zqjcweb01 ~]# ll /data/log/decision/decision.log-rw-rw-r-- 1 zquser zquser 5108 Jun 28 16:02 /data/log/decision/decision.log采用sendemail发送告警邮件,sendemail安装参考:http://10.0.8.50/software/sendemail_install.sh监控脚本路径:[root@fk-zqjcweb01 ~]# cd /opt/log_error_script/[root@fk-zqjcweb01 log_error_script]# ls decision sendemail.sh[root@fk-zqjcweb01 log_error_script]# ls decision/decision.log_diff_error.log decision.log_error.log decision.log_monit.sh脚本内容:[root@fk-zqjcweb01 log_error_script]# cat decision/decision.log_monit.sh #!/bin/shERROR_LOG=/data/log/decision/decision.logERROR_NEW_LOG=/opt/log_error_script/decision/decision.log_error.logERROR_DIFF_LOG=/opt/log_error_script/decision/decision.log_diff_error.logDATE=`date +%Y年%m月%d日%H时%M分%S秒`HOST=`/bin/hostname`IP=`/sbin/ifconfig|grep "inet addr"|grep "Bcast"|cut -d":" -f2|awk -F" " '{print $1}'`if [ ! -f $ERROR_NEW_LOG ];then/bin/touch $ERROR_NEW_LOGfiNUM1=$(/usr/bin/tail -1000 $ERROR_LOG|grep error|wc -l)NUM2=$(/bin/cat $ERROR_NEW_LOG|wc -l)if [ -f $ERROR_LOG ] && [ $NUM1 -ne 0 ] && [ $NUM2 -eq 0 ];then/bin/bash /opt/log_error_script/sendemail.sh wangshibo@kevin.com "风控系统${HOSTNAME}机器的decision.log日志中的error监控" "告警主机:${HOSTNAME} \n告警IP:${IP} \n告警时间:${DATE} \n告警等级:严重,抓紧解决啊! \n告警人员:王士博 \n告警详情:decision.log日志中出现error了! \n告警日志文件:${ERROR_LOG} \n当前状态: PROBLEM "/usr/bin/tail -1000 $ERROR_LOG|grep error > $ERROR_NEW_LOG fi/usr/bin/tail -1000 $ERROR_LOG|grep error > $ERROR_DIFF_LOG/usr/bin/cmp $ERROR_DIFF_LOG $ERROR_NEW_LOG >/dev/null 2>&1if [ $? -ne 0 ];then/bin/bash /opt/log_error_script/sendemail.sh wangshibo@kevin.com "风控系统${HOSTNAME}机器的decision.log日志中的error监控" "告警主机:${HOSTNAME} \n告警IP:${IP} \n告警时间:${DATE} \n告警等级:严重,抓紧解决啊! \n告警人员:王士博 \n告警详情:decision.log日志中出现error了! \n告警日志文件:${ERROR_LOG} \n当前状态: PROBLEM "/usr/bin/tail -1000 $ERROR_LOG|grep error > $ERROR_NEW_LOG fiYou have new mail in /var/spool/mail/root结合crontab进行定时监控[root@fk-zqjcweb01 log_error_script]# crontab -l#decision.log日志的error监控* * * * * /bin/bash -x /opt/log_error_script/decision/decision.log_monit.sh >/dev/null 2>&1* * * * * sleep 15;/bin/bash -x /opt/log_error_script/decision/decision.log_monit.sh >/dev/null 2>&1* * * * * sleep 30;/bin/bash -x /opt/log_error_script/decision/decision.log_monit.sh >/dev/null 2>&1* * * * * sleep 45;/bin/bash -x /opt/log_error_script/decision/decision.log_monit.sh >/dev/null 2>&1
====================================================================
上面提到的sendemail.sh邮件发送脚本
[root@fk-zqjcweb01 ~]# cat /opt/log_error_script/sendemail.sh #!/bin/bash# Filename: SendEmail.sh# Notes: 使用sendEmail## 脚本的日志文件LOGFILE="/tmp/Email.log":>"$LOGFILE"exec 1>"$LOGFILE"exec 2>&1SMTP_server='smtp.kevin.com'username='monit@kevin.com'password='monit@123'from_email_address='monit@kevin.com'to_email_address="$1"message_subject_utf8="$2"message_body_utf8="$3"# 转换邮件标题为GB2312,解决邮件标题含有中文,收到邮件显示乱码的问题。message_subject_gb2312=`iconv -t GB2312 -f UTF-8 << EOF$message_subject_utf8EOF`[ $? -eq 0 ] && message_subject="$message_subject_gb2312" || message_subject="$message_subject_utf8"# 转换邮件内容为GB2312,解决收到邮件内容乱码message_body_gb2312=`iconv -t GB2312 -f UTF-8 << EOF$message_body_utf8EOF`[ $? -eq 0 ] && message_body="$message_body_gb2312" || message_body="$message_body_utf8"# 发送邮件sendEmail='/usr/local/bin/sendEmail'set -x$sendEmail -s "$SMTP_server" -xu "$username" -xp "$password" -f "$from_email_address" -t "$to_email_address" -u "$message_subject" -m "$message_body" -o message-content-type=text -o message-charset=gb2312
3)第三类日志
日志规则说明:
- 在etl服务器下的EXP、MDB、MID、ODB、PDB、PUS、SDB系统里有很多任务日志,日志都存放在当天的日期目录下。
- 现在需要对这些任务日志的error进行监控,当出现error报错信息时立刻发出报警!
- 当这些任务日志文件里有出现error报错信息的,那么该任务日志文件就不会被写入了。也就是说一个任务日志文件只会出现一次error报错。
- 出现error报错信息的任务日志不能删除和更改,因为这些任务日志会被其他程序调用展示。
[root@bigdata-etl01 ~]# ll /data/etluser/LOG/drwxrwx--- 33 etluser etluser 4096 Jul 6 02:00 EXPdrwxrwx--- 33 etluser etluser 4096 Jul 6 02:00 MDBdrwxrwx--- 33 etluser etluser 4096 Jul 6 02:00 MIDdrwxrwx--- 33 etluser etluser 4096 Jul 6 02:00 ODBdrwxrwx--- 33 etluser etluser 4096 Jul 6 02:00 PDBdrwxrwx--- 32 etluser etluser 4096 Jul 6 00:47 PUSdrwxrwx--- 33 etluser etluser 4096 Jul 6 02:00 SDB[root@bigdata-etl01 ~]# ls /data/etluser/LOG/EXP/20180606 20180609 20180612 20180615 20180618 20180621 20180624 20180627 20180630 20180703 2018070620180607 20180610 20180613 20180616 20180619 20180622 20180625 20180628 20180701 2018070420180608 20180611 20180614 20180617 20180620 20180623 20180626 20180629 20180702 20180705[root@bigdata-etl01 ~]# ls /data/etluser/LOG/EXP/20180706/EXP_EXP_V_CUST_CRDT_SITU_20180705[1][1].54.log exp_v_opr_size_curr_stats_0010601[1].pl.56.logEXP_EXP_V_DAILY_BIZ_AMT_SITU_20180705[1][1].45.log exp_v_opr_size_curr_stats_0010602[1].pl.56.logEXP_EXP_V_MATR_RMND_INTFC_QG6_001_20180705[1][1].83.log exp_v_prvs_provs_int_intfc_f0_0010600[1].pl.103.logEXP_EXP_V_OPR_SIZE_CURR_STATS_001_20180705[1][1].56.log exp_v_prvs_provs_int_intfc_f0_0010601[1].pl.103.logEXP_EXP_V_PRVS_PROVS_INT_INTFC_F0_001_20180705[1][1].103.log exp_v_prvs_provs_int_intfc_f0_0020600[1].pl.98.logEXP_EXP_V_PRVS_PROVS_INT_INTFC_F0_002_20180705[1][1].98.log exp_v_prvs_provs_int_intfc_f0_0020601[1].pl.98.logEXP_EXP_V_PRVS_PROVS_INT_INTFC_F0_003_20180705[1][1].90.log exp_v_prvs_provs_int_intfc_f0_0030600[1].pl.90.logEXP_EXP_V_PRVS_PROVS_INT_INTFC_F0_007_20180705[1][1].48.log exp_v_prvs_provs_int_intfc_f0_0030601[1].pl.90.logEXP_EXP_V_PRVS_PROVS_INT_INTFC_F0_008_20180705[1][1].78.log exp_v_prvs_provs_int_intfc_f0_0070600[1].pl.48.logEXP_EXP_V_PRVS_PROVS_INT_INTFC_F0_009_20180705[1][1].15.log exp_v_prvs_provs_int_intfc_f0_0070601[1].pl.48.logEXP_EXP_V_PRVS_PROVS_INT_INTFC_F0_010_20180705[1][1].48.log exp_v_prvs_provs_int_intfc_f0_0080600[1].pl.78.logEXP_EXP_V_PRVS_PROVS_INT_INTFC_F1_004_20180705[1][1].16.log exp_v_prvs_provs_int_intfc_f0_0080601[1].pl.78.logEXP_EXP_V_PRVS_PROVS_INT_INTFC_F1_006_20180705[1][1].8.log exp_v_prvs_provs_int_intfc_f0_0090600[1].pl.15.logEXP_EXP_V_QRY_FACT_AGT_INTFC_20180705[1][1].47.log exp_v_prvs_provs_int_intfc_f0_0090601[1].pl.15.logexp_v_cust_crdt_situ0600[1].pl.54.log exp_v_prvs_provs_int_intfc_f0_0100600[1].pl.48.logexp_v_cust_crdt_situ0601[1].pl.54.log exp_v_prvs_provs_int_intfc_f0_0100601[1].pl.48.logexp_v_cust_crdt_situ0602[1].pl.54.log exp_v_prvs_provs_int_intfc_f1_0040600[1].pl.16.logexp_v_daily_biz_amt_situ0600[1].pl.45.log exp_v_prvs_provs_int_intfc_f1_0040601[1].pl.16.logexp_v_daily_biz_amt_situ0601[1].pl.45.log exp_v_prvs_provs_int_intfc_f1_0060600[1].pl.8.logexp_v_daily_biz_amt_situ0602[1].pl.45.log exp_v_prvs_provs_int_intfc_f1_0060601[1].pl.8.logexp_v_matr_rmnd_intfc_qg6_0010600[1].pl.83.log exp_v_qry_fact_agt_intfc0600[1].pl.47.logexp_v_matr_rmnd_intfc_qg6_0010601[1].pl.83.log exp_v_qry_fact_agt_intfc0601[1].pl.47.logexp_v_matr_rmnd_intfc_qg6_0010602[1].pl.83.log exp_v_qry_fact_agt_intfc0602[1].pl.47.logexp_v_opr_size_curr_stats_0010600[1].pl.56.log 监控脚本思路:1)对这些任务日志进行批量搜索error关键字(不区分大小写)2)将出现error关键字的任务日志拷贝到一个专门的目录下(error日志文件的列表目录)。3)对搜索到error关键字的任务日志做判断,判断它是否存在于那个列表目录下: 如果不存在,说明是新出现error的日志文件,就立刻报警! 如果存在,说明出现的error是之前的信息,不报警! 监控脚本编写情况如下:error_log为error日志文件的列表目录;sendemail.sh为邮件发送脚本(上面介绍过)[root@bigdata-etl01 log_error_script]# lsEXP MDB MID ODB PDB PUS SDB sendemail.sh[root@bigdata-etl01 log_error_script]# ls EXP/error_log EXP_error_monit.sh[root@bigdata-etl01 log_error_script]# ls MDB/error_log MDB_error_monit.sh[root@bigdata-etl01 log_error_script]# ls MID/error_log MID_error_monit.sh[root@bigdata-etl01 log_error_script]# ls ODB/error_log ODB_error_monit.sh[root@bigdata-etl01 log_error_script]# ls PDB/error_log PDB_error_monit.sh[root@bigdata-etl01 log_error_script]# ls PUS/error_log PUS_error_monit.sh[root@bigdata-etl01 log_error_script]# ls SDB/error_log SDB_error_monit.sh[root@bigdata-etl01 log_error_script]# 这里贴出SDB系统的任务日志的error监控报警脚本(其他几个系统的监控脚本与这个一样,只需要将脚本中的SDB替换成对应的系统名称即可!)[root@bigdata-etl01 log_error_script]# cat /opt/log_error_script/SDB/SDB_error_monit.sh#!/bin/shDATE_DIR=$(date +%Y%m%d)DATE=`date +%Y年%m月%d日%H时%M分%S秒`HOST=`/bin/hostname`IP=`/sbin/ifconfig|grep "inet addr"|grep "Bcast"|cut -d":" -f2|awk -F" " '{print $1}'` cd /data/etluser/LOG/SDBif [ ! -d $DATE_DIR ];then/bin/mkdir $DATE_DIR/bin/chown -R etluser.etluser $DATE_DIRfi cd /data/etluser/LOG/SDB/$DATE_DIRfor FILE in $(/bin/ls *.log)do NUM=$(/bin/grep -i "error" /data/etluser/LOG/SDB/$DATE_DIR/$FILE|wc -l) ERROR_MESSAGE=$(/bin/grep -i "error" /data/etluser/LOG/SDB/$DATE_DIR/$FILE) if [ $NUM -ne 0 ];then /bin/ls /opt/log_error_script/SDB/error_log/$FILE a=$? if [ $a -ne 0 ];then /opt/log_error_script/sendemail.sh wangshibo@test.com "大数据平台etl服务器${HOSTNAME}的SDB任务日志里出现error了" "告警主机:${HOSTNAME} \n告警IP:${IP} \n告警时间:${DATE} \n告警等级:严重 \n告警人员:王士博 \n告警详情:SDB的任务日志里出现error了,抓紧解决啊! \n当前状态: PROBLEM \n告警日志文件:/data/etluser/LOG/SDB/$DATE_DIR/$FILE \n\n\n------请看下面error报错信息------- \nerror信息:\n$ERROR_MESSAGE" cp /data/etluser/LOG/SDB/$DATE_DIR/$FILE /opt/log_error_script/SDB/error_log/ else echo "$FILE日志中error报错信息是之前发生的,无需报警!" fi else echo "$FILE 日志里没有error报错啦" fidone 给脚本赋予执行权限[root@bigdata-etl01 log_error_script]# chmod 755 /opt/log_error_script/SDB/SDB_error_monit.sh[root@bigdata-etl01 log_error_script]# sh /opt/log_error_script/SDB/SDB_error_monit.shqbl_biz_cst_bsc_inf0100[1].pl.73.log 日志里没有error报错啦qbl_biz_cst_bsc_inf0101[1].pl.73.log 日志里没有error报错啦qbl_biz_fnc_bsc_inf0100[1].pl.73.log 日志里没有error报错啦qbl_biz_fnc_bsc_inf0101[1].pl.73.log 日志里没有error报错啦qbl_biz_fnc_mod_inf0100[1].pl.73.log 日志里没有error报错啦qbl_biz_fnc_mod_inf0101[1].pl.73.log 日志里没有error报错啦qbl_biz_pd_bsc_inf0100[1].pl.73.log 日志里没有error报错啦qbl_biz_pd_bsc_inf0101[1].pl.73.log 日志里没有error报错啦qbl_biz_pre_ctr_bsc_inf0100[1].pl.73.log 日志里没有error报错啦qbl_biz_pre_ctr_bsc_inf0101[1].pl.73.log 日志里没有error报错啦qbl_biz_repy_base_inf0100[1].pl.73.log 日志里没有error报错啦qbl_biz_repy_base_inf0101[1].pl.73.log 日志里没有error报错啦qbl_biz_repy_pl_dtl0100[1].pl.78.log 日志里没有error报错啦qbl_biz_repy_pl_dtl0101[1].pl.78.log 日志里没有error报错啦qbl_biz_repy_pl_inf0100[1].pl.78.log 日志里没有error报错啦qbl_biz_repy_pl_inf0101[1].pl.78.log 日志里没有error报错啦qbl_biz_repy_rcrd_jrnl0100[1].pl.73.log 日志里没有error报错啦qbl_biz_repy_rcrd_jrnl0101[1].pl.73.log 日志里没有error报错啦.............. 结合crontab指定脚本定时执行任务(每30秒执行一次)[root@bigdata-etl01 ~]# crontab -l#etl相关任务日志的error监控报警* * * * * /bin/bash -x /opt/log_error_script/EXP/EXP_error_monit.sh >/dev/null 2>&1* * * * * sleep 30;/bin/bash -x /opt/log_error_script/EXP/EXP_error_monit.sh >/dev/null 2>&1 * * * * * /bin/bash -x /opt/log_error_script/MDB/MDB_error_monit.sh >/dev/null 2>&1* * * * * sleep 30;/bin/bash -x /opt/log_error_script/MDB/MDB_error_monit.sh >/dev/null 2>&1 * * * * * /bin/bash -x /opt/log_error_script/MID/MID_error_monit.sh >/dev/null 2>&1* * * * * sleep 30;/bin/bash -x /opt/log_error_script/MID/MID_error_monit.sh >/dev/null 2>&1 * * * * * /bin/bash -x /opt/log_error_script/ODB/ODB_error_monit.sh >/dev/null 2>&1* * * * * sleep 30;/bin/bash -x /opt/log_error_script/ODB/ODB_error_monit.sh >/dev/null 2>&1 * * * * * /bin/bash -x /opt/log_error_script/PDB/PDB_error_monit.sh >/dev/null 2>&1* * * * * sleep 30;/bin/bash -x /opt/log_error_script/PDB/PDB_error_monit.sh >/dev/null 2>&1 * * * * * /bin/bash -x /opt/log_error_script/PUS/PUS_error_monit.sh >/dev/null 2>&1* * * * * sleep 30;/bin/bash -x /opt/log_error_script/PUS/PUS_error_monit.sh >/dev/null 2>&1 * * * * * /bin/bash -x /opt/log_error_script/SDB/SDB_error_monit.sh >/dev/null 2>&1* * * * * sleep 30;/bin/bash -x /opt/log_error_script/SDB/SDB_error_monit.sh >/dev/null 2>&1
邮件报警效果如下:
如上可以看出,SDB系统的任务日志里发现了error信息,现在去日志列表目录里查看下,发现出现error信息的任务日志已经拷贝到列表目录里了。当下次脚本执行,搜索到这些日志发现error时就会去做判断,判断这些日志是否存在列表目录里,如果出现,就不会再次发出报警。[root@bigdata-etl01 ~]# ll /opt/log_error_script/SDB/error_log/total 12-rw-r--r-- 1 root root 1978 Jul 6 10:36 SDB_QCX_CUSTOMER_INFO_20180705[1][1].73.log-rw-r--r-- 1 root root 1939 Jul 6 10:19 SDB_QCX_FTTYPE_STC_20180705[1][1].51.log-rw-r--r-- 1 root root 1939 Jul 6 10:19 SDB_QCX_SETTLE_STC_20180705[1][1].17.log©著作权归作者所有:来自51CTO博客作者80民工的原创作品,如需转载,请注明出处,否则将追究法律责任
更多相关文章
- DBMS_ERRLOG记录DML错误日志
- mfs changelog日志解析
- 【DG】DG之Switchover和Failover的区别
- MySQL性能相关配置整理
- 日志分析ELK平台部署第一节
- mysql sync_binlog和 innodb_flush_log_at_trx_commit
- 【DG】物理DG中主库的LNSn、NSS、NSA进程的比较
- 数栈百万级分布式调度引擎——DAGScheduleX能做啥?
- Linux 日志管理——rsyslog&logrotate日志管理【CentOS】