如何确定 Nagios 服务中运行了什么命令?

如何确定 Nagios 服务中运行了什么命令?

我正在尝试调试 Nagios 服务失败的原因;据我所知,它突然开始失败,而我们并不知道有任何变化。我试图找到一种原则性的方法,从服务转到“运行这个命令,那个命令失败”,以便调试它。

该服务名为“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,并显示消息“无法创建套接字连接”。日志,

[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;这输出我看到的“无法创建套接字连接”错误取决于我传递给它的参数(这就是为什么知道 Nagios 在这里做什么会这么好...);我仍然不知道为什么它突然开始失败。

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

答案1

这是一个被动的服务,对吧?如果你没有更改配置,那么你的 NAGIOS 从未运行过任何命令根本对于这项特定的服务 - 它正在通过(例如)NSCA记录从外部输入的数据。

事实上,我怀疑它仍然如此:外部系统正在输入主机名、服务、状态代码(3)和错误消息(can't create socket connection)。

使用返回 eg 的存根活动命令CRITICAL对于此类服务很常见,因为它与新鲜度检查一起工作,CRITICAL如果在一定时间内(此处为 900 秒)未从外部发送方收到任何数据,则会导致服务停止。这可以防止 PASSIVE 服务在发送方安静时默默失败,这是一种很好的做法。

相关内容