Monit màn hình trạng thái http với trang 404


12

Tôi đang cố gắng theo dõi trạng thái HTTP với trang 404 hoặc 403. Như tất cả các bạn đều biết Monit coi các trang đó là kết nối thất bại, nhưng làm thế nào tôi có thể thay đổi điều đó. Tôi chỉ muốn theo dõi rằng nó hiển thị trang 404 hoặc 403.

Tôi cần kiểm tra nó với cấu hình này nếu có thể.

Đây là cấu hình kiểm tra của tôi:

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;'"

Câu trả lời:


13

Kể từ phiên bản 5.8, Monit có statustùy chọn :

Tùy chọn STATUS có thể được sử dụng để kiểm tra rõ ràng mã trạng thái HTTP được máy chủ HTTP trả về. Nếu không được sử dụng, kiểm tra giao thức http sẽ thất bại nếu mã trạng thái được trả về lớn hơn hoặc bằng 400. Bạn có thể ghi đè hành vi này bằng cách sử dụng vòng loại trạng thái.

Ví dụ: để kiểm tra rằng một trang không tồn tại (404 phải được trả lại trong trường hợp này):

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

6

Công statusviệc không phù hợp với tôi (monit 5.6). Tôi nghĩ rằng nó được hỗ trợ từ 5,8?

Tôi đã kết thúc với một kịch bản sử dụng 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

Sau đó, tôi đã thêm cấu hình monit sau

check program http-check with path "/etc/monit/bin/http-check.sh"
  if status != 0
  then alert
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.