即对日志文件中的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民工的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. DBMS_ERRLOG记录DML错误日志
  2. mfs changelog日志解析
  3. 【DG】DG之Switchover和Failover的区别
  4. MySQL性能相关配置整理
  5. 日志分析ELK平台部署第一节
  6. mysql sync_binlog和 innodb_flush_log_at_trx_commit
  7. 【DG】物理DG中主库的LNSn、NSS、NSA进程的比较
  8. 数栈百万级分布式调度引擎——DAGScheduleX能做啥?
  9. Linux 日志管理——rsyslog&logrotate日志管理【CentOS】

随机推荐

  1. Android中三星调用系统相机拍照后旋转的
  2. Android(安卓)各版本代号 & Java Source
  3. android webview 遇到android.os.FileUri
  4. Android属性动画property animation
  5. Android开发者实用代码片段
  6. Android加速度传感器
  7. Android IDL 小例子
  8. [置顶] Android 系列:安装Android SDK出现
  9. Android解析XML
  10. 关于android创建对话框报错The method se