Überwachen Sie den http-Status des Monitors mit einer 404-Seite

12

Ich versuche, den HTTP-Status mit einer 404- oder 403-Seite zu überwachen. Wie Sie alle wissen, nimmt Monit diese Seiten als fehlgeschlagene Verbindung, aber wie könnte ich das ändern? Ich möchte nur überwachen, dass die Seite 404 oder 403 angezeigt wird.

Ich muss es mit dieser Konfiguration überprüfen, wenn es möglich ist.

Dies ist meine Prüfkonfiguration:

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
quelle

Antworten:

13

Seit Version 5.8 hat Monit die statusOption :

Mit der Option STATUS kann der vom HTTP-Server zurückgegebene HTTP-Statuscode explizit getestet werden. Wenn es nicht verwendet wird, schlägt der http-Protokolltest fehl, wenn der zurückgegebene Statuscode größer oder gleich 400 ist. Sie können dieses Verhalten mithilfe des Statusqualifizierers überschreiben.

Zum Beispiel, um zu testen, ob eine Seite nicht vorhanden ist (in diesem Fall sollte 404 zurückgegeben werden):

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

Das statushat bei mir nicht funktioniert (Monit 5.6). Ich denke, es wird von 5.8 unterstützt?

Am Ende hatte ich ein Skript, das Curl verwendet:

#!/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

Dann habe ich die folgende Monit-Konfiguration hinzugefügt

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