Verificador de erros do Tomcat usando bash

Verificador de erros do Tomcat usando bash

Alguém pode me lançar alguma luz, me apontar na direção certa?

Quero criar um script no bash que verifique exceções nos logs durante a inicialização do aplicativo Tomcat. Este script deve ser capaz de detectar a criação de novos arquivos dinamicamente, talvez via inotify.

Este script deve verificar constantemente o diretório de logs em busca de novas linhas nos arquivos de log e escrever aquela que contém as palavras Exception:ou ERRORpara /var/log/errorcheckernotifier.txt.

Quando o script detectar esta linha, INFO: Server startup inele deverá escrever TOMCAT IS STARTEDo /var/log/errorcheckernotifier.txtnúmero de exceções detectadas durante a inicialização.

Este script não deve substituir o que está no arquivo errorcheckernotifier.txt. Em vez disso, anexe-o.

Como posso manter esse script em execução e detectar inicialização adicional, contar exceções, etc.

Responder1

Posso fornecer a parte "inicial" dos meus scripts de inicialização do Tomcat, se isso ajudar.

    começar)
        echo -n "Iniciando $FOO_BASE_JM"
        ## Inicie o daemon com startproc(8). Se isso falhar
        ## o valor de retorno é definido apropriadamente por startproc.

        se ps -efwwwwwwwwwwww | grepjava | grep -q "$FOO_BASE_JM"; então
                echo "O processo $FOO_BASE_JM já existe"
                rc_failed1
        outro

        LOGLINES=$(cat /opt/$FOO_BASE_JM/logs/catalina.out | wc -l)

        exportar CATALINA_OPTS
        ########/sbin/startproc $FOO_BIN
        if [ "$(id -un)" = "tomcat"]; então
         $FOO_BIN início || rc_failed1
        outro
         /bin/su tomcat $FOO_BIN iniciar || rc_failed1
        fi

        echo -n "Aguardando o processo aparecer."
        peso=0
        process_visto = verdadeiro
        enquanto ! ps -efwwwwwwwwwwwww | grepjava | grep -q "$FOO_BASE_JM"; fazer
                dormir 2
                eco -n .
                peso=$(($peso+1))
                if ["$wt" -gt 30]; então
                        eco
                        echo "Tempo limite: não é possível ver o processo. Você deve verificar os logs."
                        rc_failed1
                        process_visto=falso
                        quebrar
                fi
        feito
        if ["x$process_seen" = "xtrue"]; então
         eco
         echo -n "Aguardando inicialização."
         peso=0
         enquanto ! tail +$LOGLINES /opt/$FOO_BASE_JM/logs/catalina.out | grep -q "INFO: inicialização do servidor"; fazer
                dormir 2
                eco -n .
                peso=$(($peso+1))
                if ["$wt" -gt 30]; então
                        eco
                        echo "Tempo limite: não é possível encontrar sinais de inicialização bem-sucedida do servidor no log. Verifique."
                        rc_failed1
                        quebrar
                fi
         feito
         tail +$LOGLINES /opt/$FOO_BASE_JM/logs/catalina.out | grep -q "INFO: inicialização do servidor" && tail +$LOGLINES /opt/$FO
O_BASE_JM/logs/catalina.out | grep "INFO: inicialização do servidor"
        fi

        fi # se nenhum processo existir

        # Lembre-se do status e seja detalhado
        status_rc -v
        ;;

Como alternativa, posso propor o uso de uma ferramenta de monitoramento como o Nagios, apontando um de seus plugins de monitoramento de log para o arquivo catalina.out (ou onde quer que você esteja logando) e procurando por novas strings de erro ou o que lhe interessar. Em nossos bancos de dados Oracle isso funciona perfeitamente.

informação relacionada