我试图设置Nagios来监视我的各种机器使用主机组来定义“机器angular色”,我运行服务来检查angular色的机器。 但是,我想使用条件运算符,使我能够对两个主机组的交集,而不是他们的联合运行服务检查…即使用&&,||或()运算符。
例如,假设我有以下服务器:
我想创build以下主机组:
现在说我有兴趣检查我的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个)。
要做到这一点,我将不得不为每个主机排列我的服务,并为每个主机设置一个自定义的阈值,或者按angular色和区域(即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服务器和 US服务器主机组中的服务器运行检查:在我的示例中,只是www-us。 这种function的好处对于大规模configuration的Nagios服务将是非常重要的。
这个function是否可用? 如果不是,将来可以使用吗? 有没有其他的方法来完成这个最新的Nagios版本?
任何提示/build议,非常感谢!
然后,它将只运行在WWW服务器和US服务器上的服务器,在我的例子中,只是www-us。
这个function是否可用? 如果不是,将来可以使用吗?
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 }
我的方法取决于我想要实现的。 通常我相信更多的主机组是一件好事,但我也相信尽可能使用脚本自动化Nagiosconfiguration。
然而,为了处理你的用例,我会编写一个处理程序,它使用$ HOSTGROUPNAMES $macros获取主机组成员身份的列表,并适当地parsing命令string。
在Nagios文档中描述了$ HOSTGROUPNAMES $ 。 它提供逗号分隔的主机组所在的主机组列表。 使用大多数脚本语言parsing命令行应该很简单。
命令configuration可能看起来像
check_http_by_hostgroup -g $ HOSTGROUPNAMES $ -H $ HOSTNAME -I $ HOSTADDRESS $ -U $ ARG1 $ -W $ ARG2 $ -C $ ARG3 $
和服务configuration可能看起来像:
define service{ use local-service hostgroup_name WWW-Servers ; hosts are also members of us, eu, or ap servicegroups WWW Checks service_description Check HTTP Response Time check_command check_http_by_hostgroup|http://foo.bar/|us=30,eu=160|us=90,eu=240,ap=390 }
然后在主机configuration中定义主机组成员,而不是在主机组configuration中。
您可能需要查看Nagios中的服务/主机依赖function。