Monitoruj status http za pomocą strony 404

12

Próbuję monitorować stan HTTP za pomocą strony 404 lub 403. Jak wszyscy wiecie, Monit traktuje te strony jako nieudane połączenie, ale jak mogę to zmienić. Chcę tylko monitorować, czy pokazuje stronę 404 lub 403.

Muszę to sprawdzić za pomocą tej konfiguracji, jeśli jest to możliwe.

Oto konfiguracja mojego czeku:

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
źródło

Odpowiedzi:

13

Od wersji 5.8 Monit ma statusopcję :

Opcji STATUS można użyć do jawnego przetestowania kodu statusu HTTP zwróconego przez serwer HTTP. Jeśli nie zostanie użyty, test protokołu HTTP zakończy się niepowodzeniem, jeśli zwrócony kod stanu jest większy lub równy 400. Możesz zmienić to zachowanie, używając kwalifikatora statusu.

Na przykład, aby sprawdzić, czy strona nie istnieje (w tym przypadku należy zwrócić 404):

if failed
   port 80
   protocol http
   request "/non/existent.php"
   status = 404
then alert
n.st
źródło
6

statusNie działa dla mnie (Monit 5.6). Myślę, że jest obsługiwany od 5.8?

Skończyło się na skrypcie, który używa 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

Następnie dodałem następującą konfigurację monitora

check program http-check with path "/etc/monit/bin/http-check.sh"
  if status != 0
  then alert
czerasz
źródło