Назад | Перейти на главную страницу

Проверка ошибок Tomcat с использованием bash

Может ли кто-нибудь пролить на меня свет, указать в правильном направлении?

Я хочу создать сценарий в 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 это работает отлично.