例如,假设我有以下服务器:
> www-eu:欧盟的Linux WWW(Apache)服务器
> www-us:Windows WWW(IIS)服务器,在美国(西海岸)
> ftp-eu:欧盟的Linux FTP服务器
> ftp-us:Windows FTP服务器,在美国
我想创建以下主机组:
>美国服务器:www-us,ftp-us
> EU-Servers: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 }
但是,根据上述服务定义,鉴于我的Nagios服务位于美国西部,我可以合理地预期我的EU服务器将返回关键.真的,我想为每个地区设置不同的门槛(美国西部为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 }
然后,它将仅针对WWW-Servers和US-Servers主机组中的服务器运行检查:在我的示例中,仅使用www-us.对于大规模配置的Nagios服务,此功能的好处将非常重要.
这个功能可用吗?如果不是,将来是否可以使用?鉴于最新的Nagios版本,有没有其他方法可以实现这一目标?
任何提示/建议都非常感谢!
>戴夫
解决方法
It then would run the check only against servers that are in both
WWW-Servers and US-Servers,in my example,just www-us.Is this feature available? If it isn’t,will it be available in the
future?
Ethan Galstad said that他没有任何增加交叉口支持的计划.
Is there an alternative way to accomplish this given the most recent
Nagios version?
您可以通过在主机或主机组之前的定义来定义exclude some hosts!符号.所以,尝试这样的事情:
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 }