Monit 使用 404 页面监控 http 状态

Monit 使用 404 页面监控 http 状态

我正在尝试使用 404 或 403 页面来监控 HTTP 状态。众所周知,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;'"

答案1

自 5.8 版以来,Monit 具有status选项

地位选项可用于显式测试 HTTP 服务器返回的 HTTP 状态代码。如果不使用,则当返回的状态代码大于或等于 400 时,http 协议测试将失败。您可以使用状态限定符覆盖此行为。

例如测试某个页面不存在(这种情况下应该返回 404):

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

答案2

对我来说不起作用status(monit 5.6)。我认为从 5.8 开始支持它?

我最终得到了一个使用 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

然后我添加了以下监控配置

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

相关内容