Nagios支援對主機與服務所對應聯系人通知的對象擴充。主機與服務中有關通知的對象擴充是由對象定義檔案裡的主機擴充對象和服務擴充對象來聲明的。
注意
下面例子裡隻給出了服務擴充對象定義,其實主機擴充對象定義也是一樣的,當然,主機擴充是給主機對象的,而服務擴充隻給服務對象。 :-)
8.9.2. 什麼時候做通知擴充?
通知擴充将會且僅會在一個或多個擴充對象與目前要送出的通知相比對時才做。如果主機與服務的通知與對象擴充不比對任何一個合法的對象擴充,不會有主機或服務的對象擴充被應用于目前的通知過程中。見下面的例子:
define serviceescalation{
host_name webserver
service_description HTTP
first_notification 3
last_notification 5
notification_interval 90
contact_groups nt-admins,managers
}
first_notification 6
last_notification 10
notification_interval 60
contact_groups nt-admins,managers,everyone
要注意有一個通知的對象擴充定義的“孔洞”(空白區間)。也就是第1與第2個通知不會被擴充對象處理,對于超出10的通知也不會處理。對于第1和第2次通知,與全部的通知一樣将使用服務對象裡的預設聯系人組裡的聯系人做對象通知。在例子中,假定服務對象定義裡的預設的聯系人組是名為nt-admins的聯系人組。
8.9.3. 聯系人組
當定義了通知相關的對象擴充,很重要的一點是要記得“低級别”對象擴充裡的聯系人組一定要出現在“進階别”對象擴充裡的聯系人組。這樣才會確定每一個将要收到故障通知的人在故障不斷擴張的情況下會持續地收到通知。例如:
last_notification 0
第一個("低級别")檔次的擴充包括了nt-admins和managers兩個聯系人組。後一個("進階别")檔次的擴充包括了nt-admins、managers和everyone等三個聯系人組。注意,nt-admins這個聯系人組被包含在兩個檔次的擴充裡,這樣做可以使這個聯系人組的成員可以在前兩個通知送達後仍舊可以接到後序的通知。managers聯系人組最初是在第一個檔次("低級别")的擴充裡出現-裡面的成員會在第三個通知開始送出時收到通知。肯定是希望managers組裡的聯系人可持續地收到之後的通知(如果第5次故障通知還在的話),因而這個組也加到了第2("進階别")檔次的擴充定義裡了。
8.9.4. 擴充範圍的覆寫
關于通知的對象擴充可以被覆寫,見下面的例子:
notification_interval 20
first_notification 4
notification_interval 30
contact_groups on-call-support
在上例中,
nt-admins和managers兩個聯系人組将在第3次通知開始時收到通知;
全部的三個聯系人組将在第4和第5次通知時收到通知;
僅僅是on-call-support聯系人組會在第6次及之後的通知送出時收到通知。
8.9.5. 恢複的通知
當通知被擴充的時候,恢複通知會因故障通知狀态不同而稍有不同,見下例:
如果在第3次故障通知之後服務檢測後要送出一個恢複通知,那麼誰會收到通知?事實上,這個恢複通知應該算是第4個通知,然而Nagios的通知擴充代碼會“聰明地判斷出”其實隻有收到第3次通知的聯系人組才應該收到這個恢複通知。這時,nt-admins和managers聯系人組将收到這個恢複通知。(譯者注:那個on-call-support組裡的聯系人不會收到!)
8.9.6. 通知間隔
還可以修改對指定主機與服務通知的送出頻度,用主機擴充與服務擴充對象定義裡的notification_interval域來指定不同的頻度。如下例:
notification_interval 45
這個例子中,這個服務的預設通知送出間隔是240分鐘(該值是在服務對象定義裡設定的)。當該服務的通知被擴充到第3、第4和第5次時,每次通知的間隔将是45分鐘。在第6次及之後,通知間隔将變成60分鐘,這個是在第2個的服務擴充對象裡定義的。
既然主機與服務的對象擴充有可能覆寫,而且某個主機事實上有可能從屬于多個主機組,那麼Nagios就不得不就在通知間隔有覆寫的情況下取哪個通知間隔做個決定。當對于一個服務通知存在有多個合法有效的對象擴充定義時,Nagios将會取其中最小的通知間隔來做為間隔。見下例:
該例中有針對第4和第5次通知,有兩個對象擴充互相覆寫。這兩次通知間隔裡,Nagios的通知間隔将是45分鐘,因為當這幾次通知要送出時在現有的合法有效的服務對象擴充裡這個值最小。
last_notification 6
notification_interval 0
first_notification 7
在上例中,故障通知的最大次數是在4。這是因為第二檔次的服務對象擴充裡的通知間隔值是0,因而(當第4次通知将要被送出時)隻會送出一個通知而之後通知被抑制。是以,在第4次通知送出後第三個服務擴充對象無論如何也不會起作用了。
8.9.7. 時間周期的限制
通常的情況下,對通知的對象擴充可以用于任意想要送出主機與服務通知的時刻。這個"通知時間視窗"取決于主機與服務對象定義裡的notification_period域值。
可以用主機擴充與對象擴充裡的escalation_period域來指定一個特定時間周期使得擴充被限定隻處于某個特定時間段内。使用escalation_period域來指定某個時間周期裡對象擴充是可用的,對象擴充将隻是在指定的時間裡可用。如果沒有在escalation_period域裡指定時間周期,主機擴充與服務擴充将會在"通知時間視窗"内的任意時間裡是可用的。
通知擴充依舊會受限于主機與服務對象定義裡的notification_period域所指定的時間周期,因而特定的對象擴充裡的時間周期是一個更大範圍"通知時間視窗"的子集。
8.9.8. 狀态限制
如果想隻是想用特定的主機與服務的狀态限定針對通知的擴充,可以用主機擴充和服務擴充對象裡的escalation_options域來指定。如果沒有指定escalation_options域,針對通知的擴充将作用于主機與服務的任何狀态之上。
本文轉自sery51CTO部落格,原文連結: http://blog.51cto.com/sery/189078,如需轉載請自行聯系原作者