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

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

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: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

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.