不确定这里的问题是什么,但我正在为在同一台 Web 服务器上运行的两个虚拟主机设置测试。我只想确保 / 上的 GET 返回 HTTP 200。当我在命令行上运行此命令时,没有问题:
st:/etc/nagios3# /usr/lib/nagios/plugins/check_http www.example.com
HTTP OK: HTTP/1.1 200 OK - 14144 bytes in 0.055 second response time |time=0.055208s;;;0.000000 size=14144B;;;0
但是,当我将其放入配置中时,我收到警告,404 警报:
在我的commands.cfg中:
define command {
command_name check_http
command_line $USER1$/check_http -H $HOSTNAME$
}
在我的 services.cfg 中:
define service {
use generic-service
host_name myhost
service_description HTTP-WWW
check_command check_httpname!www.example.com
}
答案1
一般来说,您应该查看 Apache 日志文件以了解服务器端发生的情况。
您在命令行上运行的命令与配置文件中的命令不同。您在命令行上运行:
check_http host.example.com
但是在您的配置文件中,您正在运行:
check_http -H host.example.com
它们的作用截然不同!阅读文档了解更多信息。如果您使用基于名称的虚拟主机,这两个命令会将请求发送到不同的虚拟服务器。
答案2
我认为你可能打错了:
define command {
command_name check_http
command_line $USER1$/check_http -H $HOSTNAME$
}
也许你的意思是:
define command {
command_name check_httpname
command_line $USER1$/check_http -H $HOSTNAME$
}