如何确定在Nagios服务中运行的命令?

我试图debugging为什么Nagios服务失败; AFAIK,它突然开始失败,没有任何我们所知道的变化。 我试图find一个从服务到“命令运行,失败”的原则性方法,以便进行debugging。

该服务被命名为“NTP”; 在我的/etc/nagios3/conf.d ,我有,

 define service { use service-passive-critical hostgroup_name web-internal service_description NTP } 

没有check_command 。 然后看着serivce-passive-critical

 define service { name service-passive-critical use service-passive notification_interval 1 ; always re-send alerts, PagerDuty will dedup contact_groups contact-group-24x7 freshness_threshold 900 ; treat service as stale if no updates for 15 min check_command return-critical ; alert CRITICAL if service is stale } 

check_command ! 但是就我所知,就像名字所暗示的那样,它总是应该返回到CRITICAL。 我的服务与UNKNOWN失败,并且消息“不能创build套接字连接”。 日志,

 [1439835980] PASSIVE SERVICE CHECK: my-thing.example.com;NTP;3;can't create socket connection 

为了完整性, service-passive

 # passive services define service { use foo-service name service-passive active_checks_enabled 0 passive_checks_enabled 1 parallelize_check 1 obsess_over_service 0 check_freshness 1 freshness_threshold 900 ; treat service as stale if no updates for 15 min check_command return-unknown ; alert UNKNOWN if service is stale } 

 # for all our services we attach a graph link define service { name foo-service use generic-service action_url /nagiosgraph/cgi-bin/show.cgi?host=$HOSTNAME$&service=$SERVICEDESC$ register 0 } 

现在,我更常识的猜测是,这最终运行check_ntp ; 这确实输出了“不能创build套接字连接”的错误,我看它取决于我通过它的参数 (这就是为什么知道Nagios在这里做什么是如此高兴…); 我仍然不知道为什么突然开始失败。

另外,有没有办法来判断这是在本地,在Nagios主机上运行,​​还是通过NRPE远程运行?

这是一个被动的服务,对不对? 如果你没有改变configuration,那么你的NAGIOS从来没有运行任何命令这个特定的服务 – 它正在logging数据从外部通过(例如)NSCA馈入。

事实上,我怀疑它仍然是:外部系统正在喂养一个主机名,一个服务,一个状态码( 3 )和一个错误消息( can't create socket connection )。

使用一个存活的命令返回例如CRITICAL通常与这样的服务是一样的,因为它与新鲜度检查一起工作,如果在一定的时间(这里是900s)没有从外部发送者接收到数据,则服务器将变为CRITICAL 。 这可以防止PASSIVE服务在发送者安静时无声无息地失败,这是很好的做法。