
Может ли кто-нибудь пролить свет на этот вопрос и указать мне правильное направление?
Я хочу создать скрипт в bash, который будет проверять исключения в журналах во время запуска приложения Tomcat. Этот скрипт должен уметь обнаруживать создание новых файлов на лету, возможно, через inotify
.
Этот скрипт должен постоянно проверять каталог журналов на наличие новых строк в файлах журналов и записывать те, которые содержат слова Exception:
или ERROR
в /var/log/errorcheckernotifier.txt
.
Когда скрипт обнаруживает эту строку, INFO: Server startup in
он должен записать TOMCAT IS STARTED
в нее /var/log/errorcheckernotifier.txt
количество исключений, обнаруженных во время запуска.
Этот скрипт не должен перезаписывать то, что находится в errorcheckernotifier.txt
. Вместо этого добавьте его.
Как мне сохранить этот скрипт запущенным и обнаружить дальнейшие запуски, подсчитать исключения и т. д.?
решение1
Если это поможет, я могу предоставить вам «стартовую» часть моих скриптов инициализации tomcat.
начинать) echo -n "Запуск $FOO_BASE_JM" ## Запустить демон с помощью startproc(8). Если это не удается ## возвращаемое значение устанавливается соответствующим образом функцией startproc. если ps -efwwwwwwwwwwwwwww | grep java | grep -q "$FOO_BASE_JM"; тогда echo "Процесс $FOO_BASE_JM уже существует" rc_failed 1 еще LOGLINES=$(cat /opt/$FOO_BASE_JM/logs/catalina.out | wc -l) экспорт CATALINA_OPTS ########/sbin/startproc $FOO_BIN если [ "$(id -un)" = "tomcat" ]; тогда $FOO_BIN начало || rc_failed 1 еще /bin/su tomcat $FOO_BIN запуск || rc_failed 1 фи echo -n "Ожидание появления процесса." вес=0 процесс_виден=истина пока ! ps -efwwwwwwwwwwwwwww | grep java | grep -q "$FOO_BASE_JM"; do сон 2 эхо -н . вес=$(($вес+1)) если [ "$wt" -больше 30 ]; тогда эхо echo "Время ожидания истекло: процесс не виден. Вам следует проверить логи." rc_failed 1 процесс_виден=ложь перерыв фи сделанный если [ "x$process_seen" = "xtrue" ]; тогда эхо echo -n "Ожидание запуска." вес=0 while ! tail +$LOGLINES /opt/$FOO_BASE_JM/logs/catalina.out | grep -q "ИНФОРМАЦИЯ: Запуск сервера"; do сон 2 эхо -н . вес=$(($вес+1)) если [ "$wt" -больше 30 ]; тогда эхо echo "Тайм-аут: в журнале не найдены признаки успешного запуска сервера. Проверьте, пожалуйста." rc_failed 1 перерыв фи сделанный tail +$LOGLINES /opt/$FOO_BASE_JM/logs/catalina.out | grep -q "ИНФОРМАЦИЯ: Запуск сервера" && tail +$LOGLINES /opt/$FO O_BASE_JM/logs/catalina.out | grep "ИНФОРМАЦИЯ: Запуск сервера" фи fi # если процесс не существует # Запоминайте статус и будьте многословны rc_status -v ;;
В качестве альтернативы я могу предложить использовать инструмент мониторинга, например Nagios, указав один из его плагинов мониторинга журналов на файл catalina.out (или куда вы входите в систему) и поискать новые строки ошибок или что-то еще, что вас интересует. На наших базах данных Oracle это работает отлично.