Как проверить файл журнала на наличие ошибок в bash - PullRequest
0 голосов
/ 23 января 2020

Я хочу отсканировать файл журнала для исключения JDB C и JMS и отправить электронное письмо, если такая ошибка найдена.

Проблема здесь с tail:

  1. Я не могу периодически выполнять скрипт оболочки
  2. Если кто-то убивает команду tail, вызванную из моего скрипта оболочки, я больше не получу e оповещения по электронной почте.

До сих пор я разработал следующий скрипт:

#!/bin/bash
#This shell script monitors application logs file and sends alert email in case of JDBC or JMS error.

export LOGFILE=/usr/app/$USER/data/logs/dummyapp.log
export EMAILRECIPIENTLIST="opsteamdl@company.com"

#-------------------------------------------------------------------------
#----------- DO NOT EDIT AFTER THIS LINE ---------------------------------
#-------------------------------------------------------------------------
echo "Scanning log file - $LOGFILE"
tail -f $LOGFILE|while read line;
do
echo $line
if [ `echo $line|grep JDBCConnectionException|wc -l` -ne 0 ]; then
        mailx -s "[URGENT] - JDBCConnectionException reported in log" $EMAILRECIPIENTLIST < echo $line;
else if [ `echo $line|grep javax.jms.JMSException|wc -l` -ne 0 ]; then
        mailx -s "[URGENT] - javax.jms.JMSException reported in log" $EMAILRECIPIENTLIST < echo $line;
fi
fi
done
exit

1 Ответ

0 голосов
/ 23 января 2020

Ваш скрипт выглядит отлично, всего несколько уточнений:

tail -f $LOGFILE|while read line;
do
echo "$line"
if $(echo $line|grep -Eq "JDBCConnectionException")
then
    echo "$line" | mailx -s "[URGENT] - JDBCConnectionException reported in log" $EMAILRECIPIENTLIST && pkill -P $$ tail
elif $(echo $line|grep -Eq "javax.jms.JMSException")
 then
    echo "$line" | mailx -s "[URGENT] - javax.jms.JMSException reported in log" $EMAILRECIPIENTLIST && pkill -P $$ tail
fi
done

============================ =========================

pkill -P $$ tail: убить команду tail, запущенную вашим скриптом. Если вы хотите, чтобы ваш скрипт работал, вы можете исключить эту часть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...