Monit monitora status HTTP com página 404

6

Estou tentando monitorar o status HTTP com a página 404 ou 403. Como todos sabem, a Monit considera essas páginas como uma conexão com falha, mas como eu poderia mudar isso? Eu só quero monitorar que mostra a página 404 ou 403.

Eu preciso verificar isso com essa configuração, se possível.

Esta é a minha configuração de verificação:

check process httpd with pidfile /var/run/httpd.pid
  start program = "/etc/init.d/httpd start"
  stop program = "/etc/init.d/httpd stop"
    if failed host hostname port 80
    protocol HTTP request "/"
    then exec "/bin/bash -c '/bin/echo -e "hostname\thttpd\t3\tFAILED" | /usr/sbin/send_nsca -H nagiosserver -c /etc/send_nsca.cfg; /usr/bin/monit restart nginx;'"
    
por mYzk 09.06.2014 / 13:29

2 respostas

9

Desde a versão 5.8, a Monit tem a status opção :

STATUS option can be used to explicitly test the HTTP status code returned by the HTTP server. If not used, the http protocol test will fail if the status code returned is greater than or equal to 400. You can override this behaviour by using the status qualifier.

For example to test that a page does not exist (404 should be returned in this case):

if failed
   port 80
   protocol http
   request "/non/existent.php"
   status = 404
then alert
    
por 05.07.2014 / 23:04
6

O status não funcionou para mim (monit 5.6). Eu acho que é suportado em 5.8?

Acabei com um script que usa o curl:

#!/bin/bash
# source: /etc/monit/bin/http-check.sh

url="http://user:[email protected]/test_link/index.php"

response=$(curl -sL -w "%{http_code}\n" $url | grep 404)

if [ "$response" = "404" ]
then
  exit 0
else
  exit 1
fi

Depois adicionei a seguinte configuração de monit

check program http-check with path "/etc/monit/bin/http-check.sh"
  if status != 0
  then alert
    
por 19.08.2014 / 15:34

Tags