Nagios
如何確定 Nagios 服務中執行的是什麼命令?
我正在嘗試調試 Nagios 服務失敗的原因;AFAIK,它突然開始失敗,沒有任何我們知道的改變。我試圖找到一種從服務到“命令執行,失敗的命令”的原則方法,以便對其進行調試。
該服務被命名為“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,就像名字所暗示的那樣。我的服務因未知而失敗,並且消息“無法創建套接字連接”。日誌,[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 遠端執行?
這是被動服務,對吧?如果您沒有更改配置,那麼您的 NAGIOS 根本不會為這個特定服務執行任何命令**-**它正在記錄通過(例如)NSCA 從外部輸入的數據。
事實上,我懷疑它仍然是:外部系統正在輸入主機名、服務、狀態碼 (
3
) 和錯誤消息 (can't create socket connection
)。對於此類服務,通常使用返回 eg 的 stub active 命令
CRITICAL
,因為它與新鮮度檢查一起工作,CRITICAL
如果在一段時間內(此處為 900 秒)沒有從外部發送者接收到數據,則導致服務執行。這可以防止 PASSIVE 服務在發送者安靜時靜默失敗,這是一種很好的做法。