Назад | Перейти на главную страницу

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

Я пытаюсь отслеживать статус 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;'"

Начиная с версии 5.8, в Monit есть status вариант:

ПОЛОЖЕНИЕ ДЕЛ Параметр может использоваться для явной проверки кода состояния HTTP, возвращаемого сервером HTTP. Если не используется, проверка протокола http завершится ошибкой, если возвращенный код состояния больше или равен 400. Это поведение можно переопределить, используя квалификатор состояния.

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

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

В status у меня не получилось (monit 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