「第7節 事件處理」の編集履歴(バックアップ)一覧はこちら
「第7節 事件處理」(2005/12/13 (火) 22:31:19) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
<p><font size="3">事件處理:</font></p>
<p><font size=
"3">nagios可以在發出警告之前對事件進行處理。這可能蠻有幫助的。理由很簡單,因為可以不用人去處理。比方說我們發現server的情況不太妙了,可能需要重新啟動,此時如果你正在電車上,或是正在洗手間,
都會對這一個功能產生感謝之情。</font></p>
<p><font size=
"3">除了這些之外,如果我們想將server發生狀況時,記錄在某個資料庫裡備查,這也是一個很好用的功能。</font></p>
<p><font size=
"3">事件通常都是針對某個主機或是服務來作定義的,因為通常這些事件的變化性很大。當然我們也可以定義一個事件處理,通行所有的服務以及主機。</font></p>
<p><font size=
"3">通常事件處理也是命令的一種,這個命令會被nagios在特定的時間裡執行。</font></p>
<table border="0">
<tbody>
<tr>
<td>書式:</td>
<td><b>global_service_event_handler=<command></b></td>
</tr>
<tr>
<td>例:</td>
<td><font color=
"red"><b>global_service_event_handler=log-service-event-to-db</b></font></td>
</tr>
</tbody>
</table>
<p><br></p>
<p>命令可以被設定在以下的情況被執行。</p>
<ul>
<li>1狀態處於soft之時</li>
<li>2狀態剛從soft改變到hard之時</li>
<li>3狀態剛從soft或從hard轉變過來之時。</li>
</ul>
<p>
而命令被執行的先後順序,是全域>區域的,也就是說,在<b>global_service_event_handler裡所設定的命令會先被執行(如果它有被設定的話),然後接下來才是各主機及服務區塊裡所定義的eventhandler。</b></p>
<p>讓我們看看以下的例子:</p>
<p>假設我們有一個這樣子的服務:</p>
<p>define service{ </p>
<p>host_name 某台主機名 </p>
<p>service_description 這個服務的描述 </p>
<p>max_check_attempts 4
<--在四次都無法通過檢查之後,就會從soft轉變成hard狀態</p>
<p><b>event_handler </b> restart-service
<--設定一個區域性的事件處理命令</p>
<p>...其餘的項目.. </p>
<p>}</p>
<p>
然後,我們需要在設定命令的檔案裡,加入如下列的描述:</p>
<p>define command{ </p>
<p>command_name restart-service
<--上面的事件處理命令在此處被定義</p>
<p>command_line /usr/local/nagios/libexec/eventhandlers/restart-httpd
$SERVICESTATE$ $SERVICESTATETYPE$ $SERVICEATTEMPT$
<--實際上所執行的命令。 </p>
<p>}</p>
<p><br></p>
<p>
上面有幾個帶入命令的參數,是用來提醒nagios將那些系統變數傳給命令。在服務裡頭我們可以使用的參數分別是:</p>
<p>$SERVICESTATE$</p>
<p>$SERVICESTATETYPE$</p>
<p>$SERVICEATTEMPT$</p>
<p>而在主機裡我們可以使的參數是:</p>
<p><br></p>