已经设置了要由 Nagios3 监控的本地网络配置。我发现一个问题,Nagios3 在 IP 为 192.168.1.52 的 Debian 服务器的 HTTP 监控服务中报告警告,该服务器具有单个虚拟主机和用于应用程序开发的大量虚拟主机。我收到此状态消息:
HTTP 警告:HTTP/1.1 404 未找到
我使用 Nagios 工具来检查。servername 是我在 Apache 配置中使用的 vhost 服务器名称。
/usr/lib/nagios/plugins/check_http -H 服务器名称 -I 192.168.1.52
收到此状态消息:
HTTP OK HTTP/1.1 200 OK - 37900 字节,0.504 秒 |时间=0.503946s;;;0.000000 大小=37900B;;;0
但当我这样检查时:
/usr/lib/nagios/plugins/check_http -I 192.168.1.52
我收到与警告相同的状态消息,因此我认为我没有完全设置好 Nagios,因为无法识别该服务器的虚拟主机,它应该如 check_http 服务所示。
我应该去哪里寻找解决方案来修复这个警告?
答案1
你如何定义nagios中的服务?
它应该是这样的:
define command{
command_name my_check_http
command_line $USER1$/check_http -H$ARG1$ -I $HOSTADDRESS$
}
define host{
use generic-host
host_name something
alias something
address 192.168.1.52
# ...
}
define service{
use generic-service
host_name something
check_http_args!nameofvhost
# ...
}
答案2
人。非常感谢您的帮助,但是在检查您的任何答案之前,我自己找到了答案,抱歉!
为了解决这个问题,我在 command.cfg 文件中创建了一个自定义命令,如下所示:
定义命令{
command_name custom_check_http command_line $USER1$/check_http -H $HOSTNAME$ -I $HOSTADDRESS$
}
不太清楚 $USER1$ 的用途,但如果没有它,它就会崩溃,并出现 127 个超出债券限制的错误。
主机定义已经正确写入了 host_name 和 address(抱歉缺少这些信息!),与 pQd 写入的类似。
定义主机{
host_name SERVERNAME alias SERVERNAME_ALIAS address 192.168.1.52 ...
}
最后 services_nagios2.cfg 文件中的服务定义就像默认的一样简单:
定义服务 {
hostgroup_name http-servers service_description Apache check_command custom_check_http use generic-service notification_interval 0 ; set > 0 if you want to be renotified
}
在提出这个问题之前,我还没有意识到变量 $HOSTNAME$ 和 $HOSTADDRESS$ 的用途。再次感谢您的帮助。
答案3
我们的一个 Web 服务器上也出现了“同样”的问题。而且,这个问题是在我们的网站更新后出现的。他们还更改了 IIS 中的标头,因此才开始出现错误。
解决方法:将服务器名称改为网站名称;“服务器名称”改为“site.com”
答案4
在您的 services.cfg 中,检查服务器名称而不是 IP,或者检查端口而不是 http 响应。
后者的例子:
检查命令 检查tcp!80