benjamin @Wiki 第7節 事件處理

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

事件處理:

nagios可以在發出警告之前對事件進行處理。這可能蠻有幫助的。理由很簡單,因為可以不用人去處理。比方說我們發現server的情況不太妙了,可能需要重新啟動,此時如果你正在電車上,或是正在洗手間, 都會對這一個功能產生感謝之情。

除了這些之外,如果我們想將server發生狀況時,記錄在某個資料庫裡備查,這也是一個很好用的功能。

事件通常都是針對某個主機或是服務來作定義的,因為通常這些事件的變化性很大。當然我們也可以定義一個事件處理,通行所有的服務以及主機。

通常事件處理也是命令的一種,這個命令會被nagios在特定的時間裡執行。

書式: global_service_event_handler=<command>
例: global_service_event_handler=log-service-event-to-db


命令可以被設定在以下的情況被執行。

  • 1狀態處於soft之時
  • 2狀態剛從soft改變到hard之時
  • 3狀態剛從soft或從hard轉變過來之時。

而命令被執行的先後順序,是全域>區域的,也就是說,在global_service_event_handler裡所設定的命令會先被執行(如果它有被設定的話),然後接下來才是各主機及服務區塊裡所定義的eventhandler。

讓我們看看以下的例子:

假設我們有一個這樣子的服務:

define service{   

host_name            某台主機名   

service_description       這個服務的描述   

max_check_attempts       4    <--在四次都無法通過檢查之後,就會從soft轉變成hard狀態

event_handler          restart-service    <--設定一個區域性的事件處理命令

...其餘的項目..  

}

然後,我們需要在設定命令的檔案裡,加入如下列的描述:

define command{   

command_name  restart-service    <--上面的事件處理命令在此處被定義

command_line  /usr/local/nagios/libexec/eventhandlers/restart-httpd $SERVICESTATE$ $SERVICESTATETYPE$ $SERVICEATTEMPT$ <--實際上所執行的命令。   

}


上面有幾個帶入命令的參數,是用來提醒nagios將那些系統變數傳給命令。在服務裡頭我們可以使用的參數分別是:

$SERVICESTATE$

$SERVICESTATETYPE$

$SERVICEATTEMPT$

而在主機裡我們可以使的參數是: