在nagios中监控一个服务器内的多个网站

在nagios中监控一个服务器内的多个网站

我想在 Apache Web 服务器中监控/测试多个虚拟主机,此外,我希望这些检查在 Nagios -> HTTP 中显示为一个服务。如果其中一个 Web/URL 失败,则该服务显示为失败/警报。我不知道这是否可行。

我已经在另一台服务器上安装了 Nagios,我想检查网站是否响应状态代码 200。

那么,问题是,nagios 可以配置为在同一服务中检查多个网站吗?是否可以在一个服务中设置多个 check_command?

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

您如何在 nagios 中监控虚拟主机?您是否为每个网站创建服务?

谨此致以问候并提前致谢!

答案1

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 进程不可用,则不希望每个虚拟主机都收到通知。这样您就可以查看每个虚拟主机的状态详细信息,允许更细粒度的报告,并让您拥有不同的通知和时间段选项。

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

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

答案2

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

将其配置为您自己的服务类型即可开始使用。

我对 bash 不够熟悉,无法立即做到这一点,但是一些基本的 bash 教程可以帮助您轻松完成所有这些操作。

答案3

执行此操作的“正确”方法是使用 check_multi:

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

配置 check_multi 以一次调用多个 check_http 检查(请参阅 check_http --help 并查看 -H 和 -I 标志)。您可以为其指定需要警告/严重性检查的阈值,直到多服务被警告/严重性检查为止,等等。它非常强大且灵活。

您也可以使用 check_cluster(这是一种老式的方法,会导致 nagios web UI 中出现大量额外服务)。如果您想采用这种方式,可以阅读有关监控集群的官方文档:

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

答案4

是的,有可能,我已发表于博客关于它。在这里复制核心内容。

您需要 (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
}

相关内容