Nagios3:服务检查的条件运算符?

Dav*_*ave 6 linux monitoring nagios

我正在尝试设置 Nagios 来监视我的各种机器,使用主机组来定义“机器角色”,我针对这些机器运行服务以按角色检查机器。但是,我想使用条件运算符,使我能够针对两个主机组的交集运行服务检查,而不是它们的并集......即使用 &&、|| 或 () 运算符。

例如,假设我有以下服务器:

  • www-eu : Linux WWW (Apache) 服务器,在欧盟
  • www-us : Windows WWW (IIS) 服务器,在美国(西海岸)
  • ftp-eu : Linux FTP 服务器,在欧盟
  • ftp-us : Windows FTP 服务器,在美国

我想创建以下主机组:

  • 美国服务器: www-us, ftp-us
  • 欧盟服务器:www-eu、ftp-eu
  • WWW-Servers : www-us, www-eu
  • FTP 服务器: ftp-us, ftp-eu

现在说我有兴趣检查我的 Web 服务器的 HTTP 响应时间。然后假设这个特定的 Nagios 服务从美国(西海岸)运行,并且我有一个名为check_http_response_time的命令。此命令将检查 HTTP 服务器的响应能力,我可以提供一个参数,该参数定义在引发关键之前的最大响应时间。

我的命令可能如下所示: check_http_response_time $HOSTNAME$ 50

现在,传统上,我可以通过指定主机或主机组列表来运行我的检查。

define service{
    use             local-service
    hostgroup_name              WWW-Servers   # Servers = www-us, www-eu
    servicegroups           WWW Checks
    service_description     Check HTTP Response Time
    check_command           check_http_response_time!50
}
Run Code Online (Sandbox Code Playgroud)

但是,根据上述服务定义,鉴于我的 Nagios 服务位于美国西部,我可以合理地预期我的欧盟服务器将返回关键状态。真的,我希望每个地区都有不同的阈值(美国西部 50,欧盟 200。)

为了实现这一点,我必须为每个主机排列我的服务并为每个主机设置自定义阈值,或者按角色和区域(即 WWW-Servers-EU)排列我的服务组,并针对这些运行特定阈值。虽然后者更好,但两者都比我想要的要混乱得多......

我想要的,也是这篇文章所要求的,是一种使用主机组使用条件逻辑执行交集的方法,而不是简单的联合。它可能看起来像:

define service{
    use             local-service
    hostgroup_name              WWW-Servers && US-Servers
    servicegroups           WWW Checks
    service_description     Check HTTP Response Time
    check_command           check_http_response_time!50
}
Run Code Online (Sandbox Code Playgroud)

然后它只会对 WWW-ServersUS-Servers主机组中的服务器运行检查:在我的例子中,只是 www-us。对于大规模配置的 Nagios 服务来说,这种特性的好处将是显着的。

这个功能可用吗?如果没有,将来会提供吗?考虑到最新的 Nagios 版本,是否有其他方法可以完成此操作?

任何提示/建议都非常感谢!

  • 戴夫

qua*_*nta 6

然后它只会对 WWW-Servers 和 US-Servers 中的服务器运行检查,在我的例子中,只是 www-us。

这个功能可用吗?如果没有,将来会提供吗?

Ethan Galstad 他没有任何增加交叉点支持的计划。

考虑到最新的 Nagios 版本,是否有其他方法可以完成此操作?

您可以通过在主机或主机组前面加上符号来从定义中排除某些主机!。所以,尝试这样的事情:

define service{
    use                     local-service
    hostgroup_name          *,!EU-Servers,!FTP-Servers
    servicegroups           WWW Checks
    service_description     Check HTTP Response Time
    check_command           check_http_response_time!50
}
Run Code Online (Sandbox Code Playgroud)