被動檢查
介紹
在大多數情況下,您將使用Nagios Core通過定期安排的活動檢查來監視主機和服務。主動檢查可經常用于“輪詢”設備或服務以獲取狀態信息。Nagios Core還支持一種被動而非主動監視主機和服務的方法。被動檢查的主要功能如下:
- 被動檢查由外部應用程序/進程啟動和執行
- 被動檢查結果將提交給Nagios Core進行處理
主動檢查和被動檢查之間的主要區別在于,主動檢查由Nagios Core發起和執行,而被動檢查則由外部應用程序執行。
用于被動檢查
被動檢查對于監視以下服務很有用:
- 本質上是異步的,無法通過定期輪詢其狀態進行有效監控
- 位于防火墻后面,無法從監視主機主動檢查
可以被動監視的異步服務示例包括SNMP陷阱和安全警報。您永遠不會知道在給定的時間段內將收到多少個陷阱或警報,因此僅每隔幾分鐘監視一次它們的狀態是不可行的。

被動檢查的工作方式
以下是被動檢查的工作原理。
- 外部應用程序檢查主機或服務的狀態。
- 外部應用程序將檢查結果寫入外部命令文件。
- 下次Nagios Core讀取外部命令文件時,它將把所有被動檢查的結果放入隊列中,以供以后處理。 在Nagios Core 4之前,用于存儲主動檢查結果的隊列也用于存儲被動檢查的結果。
- Nagios Core將定期執行檢查結果收割者事件并掃描檢查結果隊列。隊列中找到的每個服務檢查結果都以相同的方式處理-不管檢查是主動還是被動。Nagios Core可能會根據檢查結果信息發出通知,日志警報等。
主動和被動檢查結果的處理基本相同。這允許將來自外部應用程序的狀態信息與Nagios Core無縫集成。
啟用被動檢查
為了在Nagios Core中啟用被動檢查,您需要執行以下操作:
- 將accept_passive_service_checks指令設置為1。
- 將主機和服務定義中的passive_checks_enabled偽指令設置為1。
如果要全局禁用被動檢查的處理,請將accept_passive_service_checks指令設置為0。
如果只想對幾個主機或服務禁用被動檢查,請在主機和/或服務定義中使用passive_checks_enabled指令來執行此操作。
提交被動服務檢查結果
外部應用程序可以通過將PROCESS_SERVICE_CHECK_RESULT 外部命令寫入外部命令文件來將被動服務檢查結果提交給Nagios Core 。
該命令的格式如下:
[<時間戳>] PROCESS_SERVICE_CHECK_RESULT; <主機名>; <svc_description>; <返回代碼>; <plugin_output>
哪里…
timestamp是執行(或提交)服務檢查的time_t格式的時間(自UNIX時代以來的秒數)。請注意右括號后的單個空格。
host_name是服務定義中與服務關聯的主機的簡稱
svc_description是服務定義中指定的服務描述
return_code是支票的返回碼(0 = OK,1 = WARNING,2 = CRITICAL,3 = UNKNOWN)
plugin_output是服務檢查的文本輸出(即插件輸出)
注意:必須先在Nagios Core中定義服務,然后才能為其提交被動檢查結果!對于最后一次(重新)啟動之前尚未配置的服務,Nagios Core將忽略所有檢查結果。
提交被動主機檢查結果
外部應用程序可以通過將PROCESS_HOST_CHECK_RESULT外部命令寫入外部命令文件來將被動主機檢查結果提交給Nagios Core。
該命令的格式如下:
[<時間戳>] PROCESS_HOST_CHECK_RESULT; <主機名>; <主機狀態>; <插件輸出>
哪里…
timestamp是執行(或提交)主機檢查的time_t格式的時間(自UNIX時代以來的秒數)。請注意右括號后的單個空格。
host_name是主機的簡稱(在主機定義中定義)
host_status是主機的狀態(0 = UP,1 = DOWN,2 = UNREACHABLE)
plugin_output是主機檢查的文本輸出
注意:必須先在Nagios Core中定義主機,然后才能為其提交被動檢查結果!Nagios Core將忽略上次(重新)啟動之前尚未配置的主機的所有檢查結果。
被動檢查和東道國
與主動主機檢查不同,Nagios Core不會(默認)通過被動檢查嘗試確定主機是DOWN還是UNREACHABLE。而是,Nagios Core將被動檢查結果作為主機所處的實際狀態,并且不會嘗試使用可達性邏輯來確定主機的實際狀態。如果您要從遠程主機提交被動檢查,或者您具有父/子主機關系不同的分布式監視設置,則可能會導致問題。
您可以告訴Nagios Core通過使用translate_passive_host_checks變量將DOWN / UNREACHABLE被動檢查結果狀態轉換為它們的“適當”狀態。有關如何工作的更多信息,請參見此處。
注意:除非啟用了active_host_checks_are_soft選項,否則被動主機檢查通常被視為HARD狀態。
從遠程主機提交被動檢查結果

如果與Nagios Core駐留在同一主機上的應用程序正在發送被動主機或服務檢查結果,則它可以簡單地將結果直接寫入外部命令文件,如上所述。但是,遠程主機上的應用程序無法做到這一點。
為了允許遠程主機將被動檢查結果發送到監視主機,可以使用NSCA或NRDP插件。NSCA插件包括在Nagios Core主機上運行的守護程序和從遠程主機執行的客戶端。守護程序將偵聽來自遠程客戶端的連接,對提交的結果執行一些基本的驗證,然后將檢查結果直接寫入外部命令文件(如上所述)。
Nagios Core中文使用教程