Monitor status http monitor dengan 404 halaman

12

Saya mencoba memonitor status HTTP dengan halaman 404 atau 403. Seperti yang Anda ketahui, Monit menganggap halaman-halaman itu sebagai koneksi yang gagal, tetapi bagaimana saya bisa mengubahnya. Saya hanya ingin memantau bahwa itu menunjukkan halaman 404 atau 403.

Saya perlu memeriksanya dengan konfigurasi ini jika memungkinkan.

Ini konfigurasi cek saya:

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
sumber

Jawaban:

13

Sejak versi 5.8, Monit memiliki statusopsi :

Opsi STATUS dapat digunakan untuk secara eksplisit menguji kode status HTTP yang dikembalikan oleh server HTTP. Jika tidak digunakan, uji protokol http akan gagal jika kode status yang dikembalikan lebih besar atau sama dengan 400. Anda bisa mengganti perilaku ini dengan menggunakan kualifikasi status.

Misalnya untuk menguji bahwa halaman tidak ada (404 harus dikembalikan dalam kasus ini):

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

Itu statustidak berhasil untuk saya (monit 5.6). Saya pikir itu didukung dari 5,8?

Saya berakhir dengan skrip yang menggunakan 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

Kemudian saya menambahkan konfigurasi monit berikut

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