我在一台机器上有两个被动的服务:ServiceA,ServiceB。
OK状态满足以下条件时,我想有一个sittuation:
我想在下列情况下发出警报:
我应该使用什么configuration选项来实现? 服务依赖性看起来不错,但我没有那个运气。
已经提到, check_cluster是“老派”的做法。 但最好的是,
check_multi是一个更好的select; 它的devise正是你想要的。
这被称为监视服务的“集群”。 您可以使用check_cluster脚本。
logging的方法使用这样的包装脚本,而不是直接调用它:
define command{ command_name check_service_cluster command_line /usr/local/nagios/libexec/check_cluster --service -l $ARG1$ -w $ARG2$ -c $ARG3$ -d $ARG4$ }
然后定义您自己的特定服务:
define service{ ... check_command check_service_cluster!"DNS Cluster"!1!2!$SERVICESTATEID:host1:dnsservicename,$SERVICESTATEID:host2:dnsservicename,$SERVICESTATEID:host3:dnsservicename ... }
在这个例子中,1/3的服务不好就是警告,2/3的服务不好就是关键。
Nagios文档
在Groundworks知识库中有更多解释
其中一种实现方法就是使用服务依赖关系,在“OK状态”上使用“失败”,如下所示:
define servicedependency{ host_name hostX service_description ServiceA dependent_host_name hostX dependent_service_description ServiceB execution_failure_criteria o notification_failure_criteria o }
“execution_failure_criteria”中的“o”表示如果ServiceA处于OK状态,则不检查ServiceB。 如果ServiceB的状态为“非OK”,它也不会通知(它不会被检查)
这几乎是一个完美的解决scheme。 还有两个小问题:
如前所述,check_multi是一个解决scheme(最好,如果你不想看到只有一个服务是closures的)
另一个是使用Nagios BPI: http : //assets.nagios.com/downloads/nagioscore/docs/Using_The_BPI_Addon.pdf
使用该插件,您可以构build复杂的“业务”指标,例如:如果只有一台Web服务器可以,那么一切正常,只要我的一台数据库服务器即可
像Nagios BPI的另一个select是Check_MK BI(但是您当然需要切换到Check_MK,这是一个很棒的产品): http ://mathias-kettner.de/checkmk_bi.html