Monitora lo stato http del monitor con 404 pagine


12

Sto cercando di monitorare lo stato HTTP con la pagina 404 o 403. Come tutti sapete, Monit prende quelle pagine come connessione non riuscita, ma come posso cambiarlo. Voglio solo monitorare che mostra la pagina 404 o 403.

Devo verificarlo con questa configurazione, se possibile.

Questa è la mia configurazione di controllo:

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;'"

Risposte:


13

Dalla versione 5.8, Monit ha l' statusopzione :

L' opzione STATUS può essere utilizzata per testare esplicitamente il codice di stato HTTP restituito dal server HTTP. Se non utilizzato, il test del protocollo http fallirà se il codice di stato restituito è maggiore o uguale a 400. È possibile ignorare questo comportamento utilizzando il qualificatore di stato.

Ad esempio per verificare che non esista una pagina (in questo caso 404 dovrebbe essere restituito):

if failed
   port 80
   protocol http
   request "/non/existent.php"
   status = 404
then alert

6

Il statusnon ha funzionato per me (Monit 5.6). Penso che sia supportato da 5.8?

Ho finito con uno script che usa curl:

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

url="http://user:password@domain.com/test_link/index.php"

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

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

Quindi ho aggiunto la seguente configurazione di monit

check program http-check with path "/etc/monit/bin/http-check.sh"
  if status != 0
  then alert
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.