benjamin @Wiki 第8節 主動監視與被動監視

※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

主動監視與被動監視

nagios除了主動的去監視主機與服務之外,還可以接受從主機及服務過來的「安全回報」,就好象在遠方的遊子常常要打電話回家報平安一樣。

簡單的來說,被動監視就是nagios不主動去監視主機或服務的狀況,而改成主機或服務向nagios回報自已的狀況,然後nagios在依照服務或主機所回報的狀況,進行通知聯絡人或是事件處理的動作。

這一個概念可以在很多領域裡被運用。比方說,你開發了一個每天半夜3點寄送當天的銷售統計的程式,這個程式所作的事情,就是在3點的時候將資料庫裡的各產品的銷售資料與客戶資料提取出來,產生統計報表後,把報表作為郵件的內容寄送到銷售經理的信箱。

我們想要讓nagios來監視這個服務,但是確有幾個要克服的問題,第一個,這個程式稱不上是什麼主機或服務,一天只執行一次。

第二個,開始的時間雖然是固定的,但是程式終了的時間確完全不固定。可能當天的銷售情況很好,資料量很多,所以處理到四點才完成。也有可能當天正逢連休,大家都出遠門去玩了,所以業蹟也很寂寞,只有幾件銷售。這種情況當天的銷售報表產生可能只要花5分鐘,也就是35分就完成了。

由於這麼多特別的情況,如果要讓nagios定期來查看的話,那可能在3 點到4點之間,nagios要定期的來訪問,看看程式是否還在執行,或是執行完了,作是作的到,但是很不方便。

但是有了被動監視之後,事情就改觀了,只要在報表記送完成,或是遇到什麼例外(exceptiom)或是錯誤時,給nagios一個回報就好了,nagios就會開始它的工作了。

介紹到這裡,我們來看一個簡單的例子:

話題進行到這裡,有一個問題不知道大家是否想到,那就是,如果程式徹底的掛點了,比方說,執行程式的主機突然受到駭客攻擊,或是糟遇了什麼不測,那nagios不就一直收不到程式送來的回報,而一直吃吃的等了?

為了解決這個問題,有一個概念將在下一節對大家說明:

新鮮度檢查

在被動檢查裡,nagios一直都處於等待的狀態。所以無法主動的去得知主機或是服務的情況。但是等待的時間如果太久,那很有可能主機或服務發生了什麼麻煩了。

這個「等待的時間是否太久」的設定,就是這個新鮮度檢查的概念。

我們買了一瓶鮮奶,我們一定會看他的製造日期,保存期限,和現在的日期作比較之後,才決定要不要購買。Nagios也是一樣。

nsgios裡,針對每一個被動監視,都可以設定保存期限。當nagios接到該監視的一個回報時,會以檔案的型式將它保存下來。每次這個監視有新的回報進來,就更新這一個檔案。

比方說在上方的例子,因為銷售的郵件每天都會寄。所以寄完郵件後到下一次寄郵件的時間間隔,也大概會是一天左右。比方說前一天在340分寄完的,今天是在35分寄完。昨天寄完郵件的時間與今天寄完郵件的時間的間隔,是23小時又25分。

又比如昨天是4點才寄完,今天因為資料更多,所以到5才寄完,這兩者之間隔了25個小時。間隔的時間在那個範圍以內才合理,這要看現場的狀況才能估計,為了簡單說明,我們假設如果間隔的時間超過30個小時以上,就有問題。也就是說,前一天是凌晨4點寄完的,但是今天的郵件到了早上的十點確還沒有寄完,那就可能寄信或是報表產生的過程中,發生了什麼障礙了。或許是真的資料量多到不行了,但是還是通知專人去檢查一下,比較能夠安心。

接著,這個「間隔多長的時間」要如何利用nagios來作監視呢?也就是剛剛所說的,nagios在接到郵件寄完時的通知時,會將它保存起來,然後在隔天在次收到郵件寄完時的通知時,會更新這一個通知的時間。

然後藉由在nagios裡設定這個保存期限。比方說我們設定為30小時。在30個小時之內,nagios裡所保存的這一個通知,如果沒有被更新的話,nagios就會判定這個通知不新鮮,過期了。此時,nagios就可以對聯絡人發出警訊,然後在由工程師去檢查一下是否真的發生問題。

簡單的以下列的圖來說明,nagios是如何實現被動檢視: