在nagios中监视服务器中的多个网站

我想监视/testing一个Apache Web服务器中的多个虚拟主机,此外,我希望这些检查在Nagios – > HTTP中显示为一个服务。 如果其中一个web / URL失败,则该服务将显示为失败/警报。 我不知道是否有可能。

我已经在另一台服务器上安装了Nagios,我想检查networking是否正在回答状态代码200。

所以,问题是,可以configurationnagios检查同一服务中的多个网站? 是否可以在服务中设置多个check_command?

check_command check_httpv!google.com check_command check_httpv!gmail.com 

你如何在nagios中监视虚拟主机? 你是否创build每个网站的服务?

问候,并提前感谢您!

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的服务依赖关系来达到目标​​。 假设您希望检查所有Apache虚拟主机,但是如果Apache进程不可用,则不会为每个虚拟主机充斥通知。 这将允许您查看每个虚拟主机的状态详细信息,允许更精细的报告,并让您有不同的通知和时间段选项。

要实现这一点,你需要为每个虚拟主机创build一个服务检查,然后为Apache创build一个检查,大概是通过使用check_http来检查IP地址,并确保某个端口正在监听80端口。

接下来,您将为每个虚拟主机的服务检查创build服务依赖关系,并将其configuration为依赖于Apache检查。 如果Apache检查失败,所有虚拟主机检查(取决于Apache检查)将停止发送通知和/或执行检查,直到Apache检查恢复。

写一个bash脚本,为每个传递的参数多次调用check_http.pl。

configuration它作为你自己的服务types,你准备好了。

对于bash来说,我并不是很熟悉,但是一些基本的bash教程可以帮助您轻松完成所有这些工作。

“正确”的方法是使用check_multi:

http://my-plugin.de/wiki/projects/check_multi/start

configuration一个check_multi一次调用多个check_http检查(请参阅check_http –help并查看-H和-I标志)。 你可以给它阈值多less需要警告/暴击,直到多服务是警告/暴击等。它是非常强大和灵活的。

你也可以使用check_cluster(这是一个古老的方法来做到这一点,并导致大量额外的服务乱扔nagiosnetworking用户界面)。 如果你想走这条路,你可以阅读有关监控集群的官方文档:

http://nagios.sourceforge.net/docs/3_0/clusters.html

是的,这是可能的,我博客 。 在这里复制核心的东西。

您需要(1)脚本获取URL列表,检查并返回状态码,(2)使用脚本的Nagios命令,(3)使用命令进行检查的主机定义。

将脚本放在/etc/nagios3/check_urls

/etc/nagios3/conf.d/commands.cfg定义该命令:

 define command { command_name check_urls command_line /etc/nagios3/check_urls $_HOSTURLS$ } 

/etc/nagios3/conf.d/hosts.cfg定义主机:

 define host { host_name example-host alias My Example address 123.123.123.123 check_command check_urls _urls my-blog.com,my-api.com/check }