我正在尝试使用 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