著名的開源服務監繫統nagios擁有強大的功能,可謂服務器監控之神。它的功能之一就是故障告警。一旦出現問題,它能夠第一時間通知工做人員。那麼如此強大的告警提醒功能若是出現了問題,要如何定位問題?配置文檔中的相關參數又表示什麼意義呢?下面我會逐個向你們介紹。
問題闡述:沒法發送告警提醒信息(email、傳真、短信等)
解決方法:順藤摸瓜,根據告警提醒功能運做的原理,一層一層去檢查設置。
<!--[if !supportLineBreakNewLine]-->ps:
若是你尚未設置你的告警,也能夠順着個人敘述來設置你的告警 ^-^
(1)全部提醒任務首先要查看hosts.cfg或者services.cfg,在這兩個文件中有以下幾個參數關係到提醒:
notifications_enabled
:
是否開啓提醒功能。1爲開啓,0爲禁用。注,通常,這個選項會在主配置文件(nagios.cfg)中定義,效果相同。
contact_groups
:
定義接受提醒的聯繫人組,若是hosts.cfg文件中全部的條件都符合,那麼提醒任務將會繼續檢查contactgroup.cfg文件。
notification_interval
:
重複發送提醒信息的最短間隔時間。默認間隔時間是60分鐘。若是這個值設置爲0,將不會發送重複提醒。
notification_period
:
發送提醒的時間段。很是重要的主機(服務)我定義爲7×24,通常的主機(服務)就定義爲上班時間。若是不在定義的時間段內,不管什麼問題發生,都不會發送提醒。
notification_options
:
這個參數定義了發送提醒包括的狀況:d = 狀態爲DOWN, u = 狀態爲UNREACHABLE , r = 狀態恢復爲OK ,
f =
flapping
。,n=不發送提醒。
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
綜上,若是要提醒信息順利經過hosts.cfg文件,而且發出提醒的話,要知足:
notifications_enabled
值爲1
contact_groups
的組已經定義正確。見(3)
notification_period
定義的時間段包括出問題的時間,檢查方法如見(2)
notification_options
定義的包括須要提醒的狀態改變。
(2)檢查timeperiod的配置,通常在主配置文件中,或者在timeperiod.cfg等配置文件中能夠找到:
define timeperiod { timeperiod_name 24x7 alias 24 Hours A Day, 7 Days A Week sunday 00:00-24:00 monday 00:00-24:00 tuesday 00:00-24:00 wednesday 00:00-24:00 thursday 00:00-24:00 friday 00:00-24:00 saturday 00:00-24:00 } |
這個配置就是定義了一個名字是
"24×7"
的時間段
,包括從週一到週日中天天的24小時。這個時間段裏,系統會將故障告警信息發送給聯繫人。
(
3
)檢查
contactgroup.cfg
的配置
define contactgroup{
contactgroup_name novell-admins
alias Novell Administrators
members jdoe,rtobert,tzach
} |
此配置定義了一個名字叫
novell-admins
的聯繫人組,包括成員
jdoe,rtobert,tzach
等三我的。你要肯定(
1
)中
contact_groups
的值在這裏有定義。
(
4
)要檢查各個聯繫人的配置,就要查看
contacts.cfg
文件:
define contact{
contact_name jdoe
alias John Doe
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
email [email]jdoe@localhost.loca[/email]ldomain
pager [email]555-5555@pagergateway.localhost.loca[/email]ldomain
address1 [email]xxxxx.xyyy@icq.com[/email]
address2 555-555-5555
} |
這個配置文件例子頂一了一個
jdoe
的聯繫方式和另一些參數。注意這裏的參數也可能會形成提醒信息沒有發送。
email
、
pager
、
address
分別對應該聯繫人的
email
地址、傳真地址、其餘地址等等。這裏解釋一下其餘相關的參數:
host_notification_period
:
主機類提醒發送時間。定義主機類提醒發給該聯繫人的時間段。在
hosts.cfg
中已經定義了一個
notification_period
,
那個定義是是定義全部該主機須要提醒的人接受提醒的時間段。這裏的這個時間段則是說明這我的接受提醒信息的時間段,也就是說提醒發送的時間必須同時知足主
機配置文件和此配置文件中的時間段纔會正常發送給聯繫人
jdoe
。這個參數對於那些
24
小時
3
班導的人,或者
10
點以後起牀的老闆,是頗有用的。
service_notification_period
:
這個參數相似於
host_notification_period
,很少說了。
host_notification_commands
:
這個參數說明發送主機提醒信息的命令。呵呵,若是以上的配置都沒有問題,可是沒有接受到提醒的話,要留意這裏!
service_notification_commands
:
這個參數說明發送服務提醒信息的命令。
host_notification_options
:
定義接受提醒的主機狀態改變:
d = DOWN , u = UNREACHABLE, r=UP or OK, f = flapping
,
n =
什麼都不發送。
service_notification_options
:
定義接受提醒的服務狀態改變。參數意義同
host_notification_options
。
(
5
)
小結。根據以上的分析,若是關於服務狀態改變、提醒信息發送時間段、聯繫人的聯繫地址等都沒有問題,那麼可能的問題就是發送提醒信息的命令出現問題。查看
這些命令以前,請肯定
nagios
系統的服務器上有
mail
或
sendmail
等發送郵件的軟件包,且工做正常。若是你有一些短信貓,或者用了其餘的提醒
腳本,請肯定其工做正常。
另外,
nagios
還包括一個名爲
Notification Escalations
的模塊,用來擴展已經很強大的提醒體系。
舉例說明一下這個模塊的功能:你定義一臺主機的提醒,首次發現問題不提醒,直到連續三次重複出現問題時,主機管理員
A
會收到提醒,而後過了一段時間,問題尚未修復,這是又繼續發送第
4
次提醒給
A
(此時
A
共收到
2
次提醒),在第五次提醒的時候,就發給了管理員
B
,……
,在第十次提醒的時候就發給了管理員的老闆……
若是你用到這個模塊,也須要檢查其是否配置正確。
(
6
)提醒命令
通常的提醒命令名稱如
xxx-notify-by-xxx
,他只是一個名字,具體是用什麼來實現這個提醒的具體工做的,要查看
command.cfg
文件中,關於此命令的定義
,
舉個例子:
# 'notify-by-email' command definition
define command{
command_name notify-by-email
command_line /usr/bin/printf "%b" "*****Nagios2.9*****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | /bin/mail -s "** $NOTIFICATIONTYPE$ alert - $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$ }
|
上例中,定義了一個名字爲"
notify-by-email"的命令,這個命令的內容,就是
command_line對應的命令行定義的。若是你是用獨立的腳原本完成提醒功能,可能會相似下面的狀況:
#host-notify-by-sms
define command { command_name host-notify-by-sms
command_line /nagios/sms.sh
}
|