緩存檢查
介紹
通過實施緩存檢查的使用,可以顯著提高Nagios Core監視邏輯的性能。緩存檢查允許Nagios Core放棄執行主機或服務檢查命令,如果它確定可以使用相對較新的檢查結果代替。
僅適用于按需檢查
定期計劃的主機和服務檢查不會通過使用緩存的檢查來提高性能。緩存檢查僅對提高按需主機和服務檢查的性能有用。計劃檢查有助于確保主機和服務狀態得到定期更新,這有可能導致將來將其結果用作緩存檢查的可能性更大。
作為參考,按需進行主機檢查:
與主機關聯的服務更改狀態時。
根據需要作為主機可達性邏輯的一部分。
根據需要進行預測性主機依賴性檢查。
并進行按需服務檢查:
- 根據需要進行預測性服務依賴性檢查。
注意:除非您使用服務依賴項,否則Nagios Core將無法使用緩存的檢查結果來改善服務檢查的性能。不必擔心-這是正常現象。緩存主機檢查是提高性能的關鍵所在,每個人都應該從中受益。

緩存如何工作
當Nagios Core需要執行按需主機或服務檢查時,它將確定是否可以使用緩存的檢查結果,或者是否需要通過執行插件來執行實際檢查。它通過檢查是否在最近的X分鐘內發生了對主機或服務的最后一次檢查來做到這一點,其中X是緩存的主機或服務檢查范圍。
如果最后一次檢查是在緩存的檢查范圍變量指定的時間范圍內執行的,則Nagios Core將使用最后一次主機或服務檢查的結果,并且不會執行新的檢查。如果尚未檢查主機或服務,或者上次檢查不在緩存的檢查時間范圍內,則Nagios Core將通過運行插件來執行新的主機或服務檢查。
這到底是什么意思
Nagios Core執行按需檢查,因為它需要在該確切時間知道主機或服務的當前狀態。利用緩存的檢查,您可以使Nagios Core認為最近的檢查結果“足夠好”來確定主機的當前狀態,并且不需要退出并實際上重新檢查該主機或服務的狀態。
緩存的檢查范圍告訴Nagios Core最近的檢查結果必須是多少才能可靠地反映主機或服務的當前狀態。例如,使用30秒的緩存檢查范圍,您要告訴Nagios Core,如果在最近30秒內某個時間檢查了主機的狀態,則該檢查的結果仍應視為主機的當前狀態。
Nagios Core可以使用的已緩存檢查結果數與其必須實際執行的按需檢查數相比,可以認為是已緩存檢查“命中”率。通過將緩存的檢查范圍增加到等于主機的常規檢查間隔,理論上您可以實現100%的緩存命中率。在這種情況下,該主機的所有按需檢查都將使用緩存的檢查結果。
緩存的檢查結果信息的可靠性隨時間降低。較高的高速緩存命中率要求以前的檢查結果在較長的時間段內被視為“有效”。在任何網絡情況下,情況都可能迅速發生變化,并且不能保證30秒鐘前運行正常的服務器現在不會著火。需要權衡-可靠性與速度。如果緩存的檢查范圍較大,則可能會在監視邏輯中使用不可靠的檢查結果值。
Nagios Core最終將確定所有主機和服務的正確狀態,因此,即使緩存的檢查結果證明不可靠地代表了它們的真實價值,Nagios Core也只能在短時間內使用不正確的信息。即使是短暫的不可靠狀態信息,也可能會給管理員帶來麻煩,因為管理員可能會收到有關不再存在的問題的通知。
沒有任何Nagios Core用戶可以接受的標準緩存檢查范圍或緩存命中率。有些人將需要較短的地平線時間范圍和較低的緩存命中率,而另一些人將需要較大的地平線時間框架和較大的緩存命中率(可靠性較低)。某些用戶甚至可能希望完全禁用緩存的檢查,以獲得100%的可靠性。測試不同的時間范圍及其對狀態信息可靠性的影響,是單個用戶唯一希望為其情況找到“正確”值的條件。關于此的更多信息將在下面討論。
配置變量
以下變量確定將先前的主機或服務檢查結果用作緩存的主機或服務檢查結果的時間范圍:
所述cached_host_check_horizon變量控制緩存主機檢查。
所述cached_service_check_horizon變量控制緩存服務檢查。
優化緩存效率
為了最有效地使用緩存的檢查,您應該:
安排定期檢查主機
使用MRTG為1)按需檢查和2)緩存檢查繪制統計圖
調整緩存的檢查范圍變量以適應您的需求
您可以通過在主機定義中為check_interval選項指定一個大于0的值來安排對主機的定期檢查。如果這樣做,請確保將max_check_attempts選項設置為大于1的值,否則將導致性能嚴重下降。此處將詳細描述這種潛在的性能損失。

確定緩存的檢查范圍選項的正確值的一種好方法是比較Nagios必須實際運行多少個按需檢查以及如何使用緩存的值。所述nagiostats實用程序可以產生上緩存的檢查,然后可將其信息與MRTG作圖。右側顯示了示例MRTG圖,顯示了已緩存的與實際的按需檢查。
產生以上圖表的監視設備具有:
共有44位主機,所有這些主機均定期進行檢查
平均(定期計劃)主機檢查間隔為5分鐘
第一個MRTG圖顯示了與已發生的高速緩存主機檢查相比,有多少個定期調度的主機檢查。在此示例中,平均每五分鐘進行53次主機檢查。其中9個(17%)是按需檢查。
第二張MRTG圖顯示了一段時間內發生了多少次緩存的主機檢查。在此示例中,每五分鐘平均進行2次緩存的主機檢查。
請記住,緩存的檢查僅適用于按需檢查。根據圖表中的5分鐘平均值,我們看到Nagios能夠在必須執行按需檢查的9次中每2次使用緩存的主機檢查結果。看起來可能并不多,但是這些圖表示一個小的監視環境。考慮到9分之2為22%,您可以開始了解如何在大型環境中顯著幫助提高主機檢查性能。如果增加了緩存的主機檢查范圍變量值,該百分比可能會更高,但這會降低緩存的主機狀態信息的可靠性。
一旦擁有了幾個小時或幾天的MRTG圖,您應該看到通過執行插件進行了多少次主機和服務檢查,而不是使用緩存檢查結果的那些。使用該信息可以根據情況適當調整緩存的檢查范圍變量。隨著時間的推移,繼續監視MRTG圖,以查看更改范圍變量如何影響緩存的檢查統計信息。沖洗并根據需要重復。
Nagios Core中文使用教程
推薦文章: