我想在Apache Web服务器中监视/测试多个虚拟主机,此外,我希望这些检查在Nagios中显示为一个服务 – > HTTP.如果其中一个Web / URL出现故障,该服务将显示为Failed / alarm.我不知道是否有可能.
我已经在另一台服务器上安装了Nagios,我想检查网络是否正在回答状态码200.
那么,问题是,nagios可以配置为检查同一服务中的多个网站吗?
是否可以在服务中设置多个check_command?
check_command check_httpv!google.com check_command check_httpv!gmail.com
你如何监控nagios中的虚拟主机?你在网站上创建服务吗?
关心并提前感谢您!
解决方法
check_http一次只能检查一个站点.如果需要在单个服务检查中检查多个站点,则需要编写自己的检查来实现逻辑.这可以在一个简单的shell脚本中轻松完成,该脚本为每个虚拟主机调用check_http,并在任何check_http执行失败时将相应的失败代码返回给Nagios.这样的脚本可能如下所示.
#!/bin/sh for HOST in $* ; do check_http -H $HOST [...other args...] >/dev/null if [ $? -ne 0 ] ; then echo "$HOST not responding" exit 2 fi done echo "All hosts ok" exit 0
或者,您可以使用Nagios’ service dependencies来达到目标.假设您希望检查所有Apache虚拟主机,但如果Apache进程不可用,则不会充斥每个虚拟主机的通知.这将允许您查看每个虚拟主机的状态详细信息,允许更精细的报告,并允许您具有不同的通知和时间段选项.
要实现这一点,您将为每个虚拟主机创建一个服务检查,然后为Apache创建一个检查,可能是通过使用check_http检查IP地址并确保正在侦听端口80.
接下来,您将为每个虚拟主机的服务检查创建服务依赖项,并将它们配置为依赖于Apache检查.如果Apache检查失败,则所有虚拟主机检查(取决于Apache检查)将停止发送通知和/或执行检查,直到Apache检查恢复.