Surveiller l'état http du moniteur avec une page 404

12

J'essaie de surveiller l'état HTTP avec la page 404 ou 403. Comme vous le savez tous, Monit considère ces pages comme une connexion défaillante, mais comment pourrais-je changer cela. Je veux juste surveiller qu'il montre la page 404 ou 403.

J'ai besoin de le vérifier avec cette config si c'est possible.

Voici ma configuration de chèque:

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
la source

Réponses:

13

Depuis la version 5.8, Monit a la statuspossibilité :

L' option STATUS peut être utilisée pour tester explicitement le code d'état HTTP renvoyé par le serveur HTTP. S'il n'est pas utilisé, le test du protocole http échouera si le code d'état renvoyé est supérieur ou égal à 400. Vous pouvez remplacer ce comportement en utilisant le qualificatif d'état.

Par exemple pour tester qu'une page n'existe pas (404 doit être retourné dans ce cas):

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

Le statusn'a pas fonctionné pour moi (monit 5.6). Je pense qu'il est pris en charge à partir de 5.8?

Je me suis retrouvé avec un script qui utilise 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

Ensuite, j'ai ajouté la configuration de monit suivante

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