
我讓 Nagios 檢查服務狀態並發送有關服務狀態的 SMS 訊息。
有些問題晚上不重要,寧願晚上不發。
define timeperiod{
timeperiod_name non_work
alias Non work hours
sunday 00:00-24:00
monday 00:00-09:00,18:00-24:00
tuesday 00:00-09:00,18:00-24:00
wednesday 00:00-09:00,18:00-24:00
thursday 00:00-09:00,18:00-24:00
friday 00:00-09:00,18:00-24:00
saturday 00:00-24:00
}
然而,早上我希望所有的問題,而不僅僅是新的問題都會被發送。我該如何配置呢?
還是nagios沒有這個功能?
答案1
有些問題在晚上並不重要
正如您所建議的,Nagios 允許您配置時間段,然後將其應用於檢查、通知、通知群組和個人使用者。當然,如果您指定要進行檢查但沒有發送通知,那麼您將不會在電子郵件中看到問題但您可以隨時在 Nagios 網頁中查看完整的警報歷史記錄。為什麼不安排一個 cron 作業在早上第一件事就是透過電子郵件向您發送隔夜警報?例如
0 8 * * * wget -O /tmp/nagios.html -i /home/user/nagioslist; mail [email protected] </tmp/nagios.html
其中 /home/user/nagioslist 包含類似以下內容:
http://example.com/nagios/cgi-bin/summary.cgi?report=1&displaytype=1
&timeperiod=last24hours&hostgroup=all&servicegroup=all&host=all&alerttypes=3
&statetypes=2&hoststates=7&servicestates=120&limit=1000
(這將顯示過去 24 小時內檢測到的最多 1000 個硬狀態)
OTOH,您可以設定一個不同的通知腳本來執行您想要推遲的通知,並將它們放入隊列中以便稍後發送(例如使用“at”)。
或者,您可以將MTA 設定為僅在特定時間間隔處理其外發郵件- 結合不同的電子郵件地址/不同的主題,然後您可以根據收件人/主題/一天中的時間有效地優先/推遲郵件。
答案2
我不確定 nagios 是否預設不這樣做。您只需要反轉通知時間段,使其僅包括工作時間而不是非工作時間。
測試這一點很容易:只需定義一個預設失敗的檢查,相應設定的通知時間段,從當前時間後幾分鐘開始,看看您是否僅在該時間段內收到訊息。
如果這不起作用,您可以嘗試使用升級方案,在 escalation_period 聲明的幫助下,在夜間發送郵件並在工作時間段發送簡訊。