Como obtenho o check_http -r para procurar exatamente n instâncias de uma string

1

Eu tenho um URL que posso consultar para garantir que meu aplicativo esteja sendo executado corretamente. Os resultados são algo como abaixo. Verificar se "ok" está na string não me diz que está tudo bem, eu preciso saber que isso ocorre 3 vezes.

{"host":"host-name","http":{"status":"ok"},"mysql":{"status":"ok"},"mongo":{"status":"ok"}}

Estou tentando o seguinte comando, mas acho que não estou fazendo o regex corretamente, alguém pode sugerir?

/usr/lib/nagios/plugins/check_http host-name -4 -w 3 -c 5 -u '/app/system/status' -r 'ok{3}' -p 8080

me dá

HTTP CRITICAL: HTTP/1.1 200 OK - pattern not found - 245 bytes in 0.011 second response time |time=0.010820s;3.000000;5.000000;0.000000 size=245B;;;0

    
por TheFiddlerWins 06.12.2013 / 20:27

2 respostas

3

O regex 'ok {3}' corresponderia à letra 'o' seguido por exatamente 3 'k's. Não me lembro como o nagios é compatível com pcre, então eles podem funcionar:

ok.*ok.*ok

ou

(ok.*?){3}
    
por 06.12.2013 / 20:40
0

Qual é o objetivo de verificar todos os serviços em uma única verificação? Digamos, o httpd se despede e seu aplicativo não estará disponível sem ele.

Você pode verificar toda a resposta na página:

-s, --string=STRING

String to expect in the content
/usr/lib/nagios/plugins/check_http host-name -4 -w 3 -c 5 -u '/app/system/status' -s "{"host":"host-name","http":{"status":"ok"},"mysql":{"status":"ok"},"mongo":{"status":"ok"}}"
    
por 06.12.2013 / 21:42