
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 ERROR
para /var/log/errorcheckernotifier.txt
.
Quando o script detectar esta linha, INFO: Server startup in
ele deverá escrever TOMCAT IS STARTED
o /var/log/errorcheckernotifier.txt
nú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.