Как создать настроенное задание наблюдения за журналом в java, которое предоставляет отчеты об исключительной ситуации, произошедшей в файле журнала - PullRequest
0 голосов
/ 20 февраля 2019
  1. Должен иметь возможность обрабатывать большие файлы журналов и предоставлять отчеты об исключениях
  2. После завершения анализа журнала триггер уведомления о доставке отправляется на определенные почтовые идентификаторы.А также, пожалуйста, предложите, какой фреймворк лучше всего подходит для обработки больших файлов. [Например: Spring boot / batch]

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Может использовать клиент sendmail в системе и запускать сценарий в этой системе для отправки оповещения о любом исключении.

exception="Exception" # "Error", "HTTP 1.1 \" 500", etc
ignoredException="ValidationException"

# log file to scan 
logFileToScan=/var/log/tomcat8/log/application.log

# file where we will keep log of this script
logFilePath=/home/ec2-user/exception.log

# a file where we store till what line the log file has been scanned
# initalize it with 0 
countPath=/home/ec2-user/lineCount

# subject with which you want to receive the mail regading Exception
subject="[ALERT] Exception"

# from whom do you want to send the mail regarding Exception
from="abc@abc.com"

# to whom do you want to send the mail
to="xyz@xyz.com"

# number of lines, before the line containing the word to be scanned, to be sent in the mail
linesBefore=1

# number of lines, before the line containing the word to be scanned, to be sent in the mail
linesAfter=4

# start line
fromLine=`cat $countPath`

# current line count in the file
toLine=`wc -l $logFileToScan | awk '{print $1}'`

#logs are rolling so if fromLine has a value greater than toLine then fromLine has to be set to 0
if [ "$fromLine" == "" ]; then
        fromLine=0
        echo `date` fromLine values was empty, set to 0 >> $logFilePath
elif [ $fromLine -gt $toLine ]; then
        echo `date` logfile was rolled, updating fromLine from $fromLine to 0 >> $logFilePath
        fromLine=0
fi

# if from n to lines are equal then no logs has been generated since last scan
if [ "$fromLine" == "$toLine" ]; then
        echo `date` no logs genetared after last scan >> $logFilePath
else
        echo `date` updating linecount to $toLine >> $logFilePath
        echo $toLine > $countPath

        logContent=`tail -n +"$fromLine" $logFileToScan | head -n "$((toLine - fromLine))" | grep -v $ignoredException | grep -A $linesAfter -B $linesBefore $exception`
        logContent=`echo $logContent | cut -c1-2000`
        if [ "$logContent" == "" ]; then
                echo `date` no exception found >> $logFilePath
                else
                /usr/sbin/sendmail $to <<EOF
subject: $subject
from: $from

logContent=$logContent

EOF
        fi
fi
0 голосов
/ 20 февраля 2019

Я бы предложил пойти с ELK stack .Поток журналов для упругого поиска и настройки оповещений в Kibana.

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