运行Nagios Core 4.0.2并在客户端使用最新的NRPE。
我们有3个服务定义每分钟检查一个不同层次的软件:
在任何这些检查失败的状态下,我们将调用一个event_handler来重新启动服务,最多3次。 如果3后状态不好,则升级。
问题是有一些组合,如果一个服务将失败另一个预计将处于CRITICAL状态。 如果我们每个都有一个event_handler,两个都失败,那么通过event_handler重启脚本将被调用两次。
问题:我们如何确保事件处理程序只被一个失败的服务检查调用,而不是3个失败的服务中的两个或多个重新启动,因为它们的状态变为CRITICAL? 例如,如果3个服务检查进入CRITICAL,那么在1分钟内重新启动3次,在2分钟内重新启动6次(假设重新启动失败使服务恢复到OK状态)。
我相信服务依赖可能是正确的解决scheme,但我不知道如何去创build它们来满足不同的条件。
服务依赖是实现它的方法。
您希望使您的应用程序图层服务检查取决于您的进程运行检查。
你想让你的进程运行检查取决于你的TCP端口检查。
你想使所有这些依赖于主机 (而不是服务)检查 – 这解决了“networking条件”故障的情况。
这些可以很快变得非常复杂,但基本的想法是:
define servicedependency{ host_name TheServer service_description The Service I Depend On dependent_host_name TheServer dependent_service_description The Dependent Service execution_failure_criteria n notification_failure_criteria w,u,c
}
execution_failure_criteria确实是这里的主力:它列出了主服务可以在这个服务中不被检查的状态(在这种情况下,如果服务“服务I依赖于”处于状态“通知”),可以指定多个选项(如下面的行)。
以下是对nagiosconfiguration选项的一个很好的解释。 http://nagios.frank4dd.com/docs/en/objectdefinitions.html#servicedependency