ตรวจสอบสถานะ 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;'"

คำตอบ:


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

6

สิ่งนี้ใช้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

จากนั้นฉันเพิ่มการกำหนดค่า monit ต่อไปนี้

check program http-check with path "/etc/monit/bin/http-check.sh"
  if status != 0
  then alert
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.