Может ли кто-нибудь пролить на меня свет, указать в правильном направлении?
Я хочу создать сценарий в bash, который будет проверять исключения в журналах во время запуска приложения Tomcat. Этот скрипт должен уметь обнаруживать создание новых файлов на лету, возможно, через inotify
.
Этот сценарий должен постоянно проверять каталог журналов на наличие новых строк в файлах журналов и записывать ту, которая содержит слова Exception:
или ERROR
к /var/log/errorcheckernotifier.txt
.
Когда скрипт обнаруживает эту строку INFO: Server startup in
он должен писать TOMCAT IS STARTED
в /var/log/errorcheckernotifier.txt
и количество исключений, обнаруженных при запуске.
Этот сценарий не должен перезаписывать то, что находится в errorcheckernotifier.txt
. Вместо этого добавьте его.
Как я могу сохранить этот скрипт в рабочем состоянии и определять дальнейший запуск, подсчитывать исключения и т. Д.
Я могу дать вам "начальную" часть моих сценариев инициализации tomcat, если это поможет.
start) echo -n "Starting $FOO_BASE_JM " ## Start daemon with startproc(8). If this fails ## the return value is set appropriately by startproc. if ps -efwwwwwwwwwwwwww | grep java | grep -q "$FOO_BASE_JM"; then echo "Process $FOO_BASE_JM already exists" rc_failed 1 else LOGLINES=$(cat /opt/$FOO_BASE_JM/logs/catalina.out | wc -l) export CATALINA_OPTS ########/sbin/startproc $FOO_BIN if [ "$(id -un)" = "tomcat" ]; then $FOO_BIN start || rc_failed 1 else /bin/su tomcat $FOO_BIN start || rc_failed 1 fi echo -n "Waiting for process to appear." wt=0 process_seen=true while ! ps -efwwwwwwwwwwwwww | grep java | grep -q "$FOO_BASE_JM"; do sleep 2 echo -n . wt=$(($wt+1)) if [ "$wt" -gt 30 ]; then echo echo "Timeout: can't see the process. You should check the logs." rc_failed 1 process_seen=false break fi done if [ "x$process_seen" = "xtrue" ]; then echo echo -n "Waiting for startup." wt=0 while ! tail +$LOGLINES /opt/$FOO_BASE_JM/logs/catalina.out | grep -q "INFO: Server startup"; do sleep 2 echo -n . wt=$(($wt+1)) if [ "$wt" -gt 30 ]; then echo echo "Timeout: can't find signs for successful server startup in log. Please check." rc_failed 1 break fi done tail +$LOGLINES /opt/$FOO_BASE_JM/logs/catalina.out | grep -q "INFO: Server startup" && tail +$LOGLINES /opt/$FO O_BASE_JM/logs/catalina.out | grep "INFO: Server startup" fi fi # if no process exists # Remember status and be verbose rc_status -v ;;
В качестве альтернативы я могу предложить использовать инструмент мониторинга, такой как Nagios, указав один из его плагинов мониторинга журналов в файле catalina.out (или где бы вы ни выполняли вход) и искать новые строки ошибок или все, что вас интересует. На наших базах данных Oracle это работает отлично.