Monit monitore o status http com página 404

12

Estou tentando monitorar o status HTTP com a página 404 ou 403. Como todos sabem, o Monit considera essas páginas como conexões com falha, mas como eu poderia mudar isso. Eu só quero monitorar que ele mostra a página 404 ou 403.

Eu preciso verificar com esta configuração, se possível.

Esta é a minha configuração de verificação:

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
fonte

Respostas:

13

Desde a versão 5.8, o Monit tem a statusopção :

A opção STATUS pode ser usada para testar explicitamente o código de status HTTP retornado pelo servidor HTTP. Se não for usado, o teste do protocolo http falhará se o código de status retornado for maior ou igual a 400. Você pode substituir esse comportamento usando o qualificador de status.

Por exemplo, para testar se uma página não existe (404 deve ser retornado neste caso):

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

O statusnão funcionou para mim (ponto 5.6). Eu acho que é suportado a partir de 5.8?

Acabei com um script que usa 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

Então eu adicionei a seguinte configuração monit

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