Мониторинг статуса http монитора с 404 страницы

12

Я пытаюсь отслеживать статус HTTP с 404 или 403 страницы. Как вы все знаете, Monit воспринимает эти страницы как сбой соединения, но как я могу это изменить. Я просто хочу следить, чтобы он показывал страницу 404 или 403.

Мне нужно проверить это с этим конфигом, если это возможно.

Это мой контрольный конфиг:

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
источник

Ответы:

13

Начиная с версии 5.8, Monit имеет statusопцию :

Опцию STATUS можно использовать для явного тестирования кода состояния HTTP, возвращаемого сервером HTTP. Если не используется, проверка протокола http не будет выполнена, если возвращенный код состояния будет больше или равен 400. Это поведение можно переопределить с помощью квалификатора состояния.

Например, чтобы проверить, что страница не существует (в этом случае должно быть возвращено 404):

if failed
   port 80
   protocol http
   request "/non/existent.php"
   status = 404
then alert
n.st
источник
6

statusНе работа для меня (монит 5,6). Я думаю, что поддерживается с 5.8?

Я закончил со скриптом, который использует 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

Затем я добавил следующую конфигурацию монитора

check program http-check with path "/etc/monit/bin/http-check.sh"
  if status != 0
  then alert
czerasz
источник