最近在做nagios監控,需要實現定時通知功能。找了一些資料,後邊加上了自己配置的詳細過程。
這個是原文:
在Nagios配置基礎中,我已介紹了通知配置方法.當某個受監控系統不再可達時,Nagios會發送告警通知.默認情況下,Nagios以郵件方式,將通知發送給指定聯繫人.在本章中,你將學會如何配置系統,實現在不同時間段,發送通知給不同管理員.
Nagios通知默認配置介紹
在學習如何配置之前,我們先簡單介紹一下默認配置.配置文件位於/etc/nagios/objects/contacts.cfg,默認情況下,文件中包含一個聯繫人與一個聯繫組.具體內容如下所示:
efine contact{
contact_name nagiosadmin
use generic-contact
alias Nagios Administration
email nagios@localhost
}
define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members nagiosadmin
}
在默認配置中,告警幾乎不怎麼起作用.要讓系統將通知發送至某個收件箱,用戶需要有指定的電子郵箱,並經常檢查通知郵件.在通知郵件發出,到用戶打開郵箱閱讀,可能會經過很長的時間.
讓Nagios在不同時間段發送通知
默認情況下,所有告警會晝夜不停的發送.你可以通過建立多種方案來實現在不同時間段發送通知.我們從/etc/nagios/objects/timeperiods配置文件開始介紹,此文件用於設定時間段.舉例說明,你可以通過以下設置,定義“夜晚”的時間段:
define timeperiod{
timeperiod_name night
alias do not disturb
sunday 00:00-06:00
monday 00:00-06:00
tuesday 00:00-06:00
wednesday 00:00-06:00
thursday 00:00-06:00
friday 00:00-06:00
saturday 00:00-06:00
}
我們可以利用這些時間段,給不同用戶帳號設置不同值守時間,併爲不同事件設置不同的動作.這樣可以確保告警在半夜也可以發送給適當的人.
如果已經通過定義contacts.cfg定義了多個通信帳號,並按照上面介紹的方法定義了時間段,我們現在可以設置讓任何主機或者服務,在特定時間段內,將通知發送給不同的人.
因此,你可以根據一天的時間段,爲不同的主機定義不同的動作,將事件信息發送給不同的管理員.例如,以下配置信息可以讓你將“check-host-alive”(檢測主機在線情況)檢查任務設置成在夜裏每一小時檢查一次,當然,你可以調整檢查頻率,實現每15分鐘檢查一次:
define host{
host_name my-server
hostgroups linuxservers
...
check_command check-host-alive
...
check_period night
contact nagiosadmin
notification_interval 60
notification_period night
notification_options d,u
此配置與默認配置一起使用,可以針對夜晚時間段進行主機監控.
現在,你已經知道如何利用多Nagios聯繫名單與時間段定義,建立自定義告警通知.活用這些技巧可以讓你確保適合的人在適合的時間,收到正確的Nagios通知.
下面是一些配置過程:
指定服務,指定聯繫人,指定通知方式。
爲了實現對指定服務,實現指定聯繫人的通知方式,
在 timeperiods.cfg 中加入發送通知時間
define timeperiod{
timeperiod_name notify_at_8
alias once_a_day
sunday 08:00-09:00
monday 08:00-09:00
tuesday 08:00-09:00
wednesday 08:00-09:00
thursday 09:00-10:00
friday 08:00-09:00
saturday 08:00-09:00
}
定義需要通知的聯繫人:
define contact {
contact_name notifyadmin
alias wu
use generic-contact
service_notification_commands notify-service-by-qqemail #通知命令
email [email protected]
}
我們在指定的主機中加入服務
define service{
host_name localhost
use local-service
service_description notify_at_800
contacts notifyadmin # 指定聯繫人
check_command notify_at_800 #定義一個服務檢查命令來觸發通知發送。
check_period notify_at_8 #定義檢測時間。
notification_period notify_at_8 #檢測間隔
}
重啓服務就可以實現在指定時間段發送消息。