Modificando a correspondência de regex no nagios logwarn que corresponde à sequência, para não corresponder se for seguida por outra sequência
Considerando o seguinte log de erros, em um arquivo de log, que estou usando como entrada para o comando nagios logwarn -
[19910:7f88e07ff700:559445:000001] [] \nFatal error: File not found: ./postGetAds.php in /var/cake_1.2.0.6311-beta/app/webroot/openx/www/delivery/androidGetAd.php on line 302
O regex a seguir funciona perfeitamente, para detectar se uma string "Fatal" está presente -
/^.*Fatal*/g
Aqui está o comando nagios logwarn completo em que estou usando o regex acima -
/usr/local/nagios/libexec/check_logwarn -d /tmp/logwarn_hiphop_error -p /mnt/log/hiphop/error_`(date +'%Y%m%d')`.log "^.*Fatal*"
E aqui está a saída, como era desejado até agora -
Log errors: [Thu Jan 12 07:46:38 2017] [hphp] [19910:7f89543ff700:558024:000001] [] \nFatal error: File not found: ./postGetAd.php in /var/cake_1.2.0.6311-beta/app/webroot/openx/www/delivery/androidGetAd.php on line 302
Agora, quero fazer uma modificação, para ignorar a correspondência de uma linha de log, se houver uma string "Arquivo não encontrado:" após o "Fatal", como no exemplo de log de erro acima.
odocumentação de logwarn menciona suporte para uma expressão de verificação negativa e suporte para várias expressões regulares no mesmo comando, como este -
logwarn -p -m '^myprog: ' '!retrying' 'ERROR'
Então, tentei o seguinte, que ainda não está fornecendo o resultado desejado (ainda corresponde ao arquivo que não existe) -
/usr/local/nagios/libexec/check_logwarn -d /tmp/logwarn_hiphop_error -p /mnt/log/hiphop/error_20170118.log '^.*Fatal*' '!.*File not found\: \.\/postGetAd\.php'
Em um cenário prático, eu teria vários caminhos de arquivo cujos erros correspondentes "Arquivo não encontrado" precisam ser ignorados. A melhor solução poderia considerar isso também.
Nota - o regex aqui é de sabor POSIX.