Monit supervisa el estado http con la página 404

12

Estoy tratando de monitorear el estado de HTTP con 404 o 403 páginas. Como todos saben, Monit toma esas páginas como una conexión fallida, pero ¿cómo podría cambiar eso? Solo quiero controlar que muestre la página 404 o 403.

Necesito verificarlo con esta configuración si es posible.

Esta es mi configuración de verificación:

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

Respuestas:

13

Desde la versión 5.8, Monit tiene la statusopción :

La opción ESTADO se puede usar para probar explícitamente el código de estado HTTP devuelto por el servidor HTTP. Si no se usa, la prueba del protocolo http fallará si el código de estado devuelto es mayor o igual a 400. Puede anular este comportamiento utilizando el calificador de estado.

Por ejemplo, para probar que no existe una página (en este caso, debe devolverse 404):

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

El statusno funcionó para mí (monit 5.6). Creo que es compatible desde 5.8?

Terminé con un script que usa 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

Luego agregué la siguiente configuración de monit

check program http-check with path "/etc/monit/bin/http-check.sh"
  if status != 0
  then alert
czerasz
fuente