「第2節 設定服務」の編集履歴(バックアップ)一覧はこちら
「第2節 設定服務」(2005/12/21 (水) 08:04:12) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
<p class="MsoNormal"><b><span style="font-family: PMingLiU;" lang="ZH-TW"><br>
繼承的概念:</span></b></p>
<p class="MsoNormal"><span style="font-family: PMingLiU;" lang="ZH-TW"><br>
進行了上述的解示之後,接下來我們進入第一個詳細的設定項目。服務。</span></p>
<p class="MsoNormal"><span style="font-family: PMingLiU;" lang=
"ZH-TW">如果服務是一個物件的話,那將會是如下面的</span><span style="font-family: PMingLiU;"
lang="EN-US">uml</span><span style="font-family: PMingLiU;" lang=
"ZH-TW">所示的:</span></p>
<p class="MsoNormal"><span style="font-family: PMingLiU;" lang=
"ZH-TW">這一個物件可以產生很多的實例,以</span><span style=
"font-family: PMingLiU;" lang="EN-US">uml</span><span style=
"font-family: PMingLiU;" lang=
"ZH-TW">來表示的話,將會是如下圖所示:<br></span></p>
<p class="MsoNormal"><span style="font-family: PMingLiU;" lang=
"ZH-TW">這物件也能夠使用繼承的概念:</span></p>
<p class="MsoNormal"><span style="font-family: PMingLiU;" lang=
"ZH-TW">如下圖所示:</span></p>
<p class="MsoNormal"><img src="http://www.okjp.net/book/00001.jpg" alt=
""><br></p>
<p class="MsoNormal"><br></p>
<p class="MsoNormal"><span style="font-family: PMingLiU;" lang=
"ZH-TW">繼承的概念在物件導向的程式設計裡是一個非常基要的概念,如同字義所示,繼承是指從父物件繼承了一些特性,然後在子物件裡可以對這些父的特性作修改,或是發展一些新的特性。</span></p>
<p class="MsoNormal"><span style="font-family: PMingLiU;" lang=
"ZH-TW">更簡單的說,就是把各個服務的特性作個整理,將共同的部份抽出來統一成一個檔案,以便將來修改時可以不用同樣的東西改很多次。</span></p>
<p class="MsoNormal">以
上的圖告訴我們,有一個服務,位於ip:192.168.3.69的位置,它需要每天的九點到十六點的這一段時間,以check_http這一個命令來進
行監視。而另外一個服務,位於ip192.168.3.80的位置。除了ip的地址不同之外,其他的需求都是相同的(相同的監視時間,相同的監視命令)<br>
</p>
<p class="MsoNormal">
而使用了繼承之後,我們只需要定義好一個服務,然後讓另外一個服務繼承它。這個時候,我們只需要在另外一個服務上進行修改,而不需要作重覆性的定義命令,及監視的時間,就可以輕鬆的完成另外一個服務的定義。<br>
</p>
<p class="MsoNormal"><br></p>
<p class="MsoNormal"><span style="font-family: PMingLiU;" lang=
"ZH-TW">使用繼承的好處在於設定檔的設定很簡單,而且容易修改。設定檔案也可以變得簡單易懂。<br>
</span></p>
<p class="MsoNormal"><span style="font-family: PMingLiU;" lang=
"ZH-TW"><b>設定檔的整體概念:</b><br></span></p>
<p class="MsoNormal"><span style="font-family: PMingLiU;" lang="ZH-TW">nagios
的deamon啟動之時,會將設定給給讀取進來。至於會讀取那一些設定檔,則是在NAGIOS.CFG這一個檔案裡所定義。也就是說,nagios先讀取
NAGIOS.CFG,然後發現裡頭所記載的設定檔名稱,然後在一個一個的將這些名稱上所指定的設定檔,一一的讀進來。<br>
</span></p>
<p class="MsoNormal"><span style="font-family: PMingLiU;" lang=
"ZH-TW">nagios的設定檔我們下章才會談到,但是為了在進行設定之前有一個完整的概念,我們先打開這一個檔案,在開頭的位置,有著一堆以</span><span style="font-family: PMingLiU;"
lang="ZH-TW">cfg_file開頭的文字。</span><span style=
"font-family: PMingLiU;" lang="ZH-TW">比方說,在我的</span><span style=
"font-family: PMingLiU;" lang=
"ZH-TW">NAGIOS.CFG設定裡,就有著如下方所示的文字:</span></p>
<blockquote>
<p class="MsoNormal"><span style="font-family: PMingLiU;" lang=
"ZH-TW"><b><span style=
"color: rgb(51, 102, 102);">cfg_file=/usr/local/nagios/etc/contactgroups.cfg</span><br style="color: rgb(51, 102, 102);">
<span style=
"color: rgb(51, 102, 102);">cfg_file=/usr/local/nagios/etc/contacts.cfg</span><br style="color: rgb(51, 102, 102);">
<span style=
"color: rgb(51, 102, 102);">#cfg_file=/usr/local/nagios/etc/dependencies.cfg</span><br style="color: rgb(51, 102, 102);">
<span style=
"color: rgb(51, 102, 102);">#cfg_file=/usr/local/nagios/etc/escalations.cfg</span><br style="color: rgb(51, 102, 102);">
<span style=
"color: rgb(51, 102, 102);">cfg_file=/usr/local/nagios/etc/hostgroups.cfg</span><br style="color: rgb(51, 102, 102);">
<span style=
"color: rgb(51, 102, 102);">cfg_file=/usr/local/nagios/etc/hosts.cfg</span><br style="color: rgb(51, 102, 102);">
<span style=
"color: rgb(51, 102, 102);">cfg_file=/usr/local/nagios/etc/services.cfg</span><br style="color: rgb(51, 102, 102);">
<span style=
"color: rgb(51, 102, 102);">cfg_file=/usr/local/nagios/etc/timeperiods.cfg</span></b><br>
</span></p>
</blockquote>
<p class="MsoNormal"><span style="font-family: PMingLiU;" lang=
"ZH-TW">在這裡的</span><span style="font-family: PMingLiU;" lang=
"ZH-TW">cfg_file後方所緊接著的,就是設定檔的名稱。你可以將所有的設定檔寫在唯一一個檔案裡,也可以依照設定檔的內容不同,使用複數的檔案來作分類。和所有的linux的習慣一樣,#開頭的代表是註釋,不會被nagios的程式所讀進去。<br>
</span></p>
<p class="MsoNormal">
nagios啟動時,就會依照這裡所定義的次序,一個一個的將設定檔裡的內容給讀取進來。<br>
</p>
<p class="MsoNormal">
<b>設定時的測式:<br></b>由於設定nagios時需要設定很多的部份。如果你是像我一樣,分成一個一個的檔案分別作設定時,各檔案之間的統合性,比方說在<span style="font-family: PMingLiU;"
lang="ZH-TW"><b><span style=
"color: rgb(51, 102, 102);">timeperiods.cfg</span></b></span>檔案裡定義了一個名為workhour的timeperiod,
然後將這個名為workhour 的物件,放在<span style=
"font-family: PMingLiU;" lang="ZH-TW"><b><span style=
"color: rgb(51, 102, 102);">services.cfg</span></b></span>的
檔案裡來使用,這種彼此關連的設定方式,其實對於程式員來說,是非常習以為常的。比方說寫了一個car的物件,然後這個car物件在travel的
method裡被使用。但是程式員寫程式時,可以借由編譯器,也就是所謂的compiler來幫忙檢查錯誤,所以在複雜的邏輯都可以被容易的開發出來。<br>
</p>
<p class="MsoNormal">nagios
雖然沒有所謂的compiler,但是它有提供一個選項(-v),來讓我們測式我們所定義的設定檔群,是否彼此之間都是正確沒有錯誤的。即使在怎麼小心的
人,有時候也會犯一些錯誤,比方說定義了相同名字的物件,或是將文字拼錯,等等的問題。所以這個功能可以說是非常的需要,非常的實用。</p>
<p class="MsoNormal"><br>
這一個命令選項是以如下的方式來被執行:<br></p>
<p class="MsoNormal"><b><span style=
"color: rgb(51, 204, 0);">/usr/local/nagios/bin/nagios
-v/usr/local/nagios/etc/nagios.cfg</span></b><br></p>
<p class="MsoNormal">
後方一定是跟者nagios.cfg所在的位置,因為就好像我們之前所說的,nagios是先讀進<b><span style="color: rgb(51, 204, 0);">nagios.cfg</span></b>之後,在依照<b><span style="color: rgb(51, 204, 0);">nagios.cfg</span></b>裡頭所指示的,一行一行的讀進來的緣故。<br>
</p>
<p class="MsoNormal">開始設定service<br></p>
<p class="MsoNormal"><b><span style="font-family: PMingLiU;" lang="ZH-TW"><br>
繼承的概念:</span></b></p>
<p class="MsoNormal"><span style="font-family: PMingLiU;" lang="ZH-TW"><br>
進行了上述的解示之後,接下來我們進入第一個詳細的設定項目。服務。</span></p>
<p class="MsoNormal"><span style="font-family: PMingLiU;" lang=
"ZH-TW">如果服務是一個物件的話,那將會是如下面的</span><span style="font-family: PMingLiU;"
lang="EN-US">uml</span><span style="font-family: PMingLiU;" lang=
"ZH-TW">所示的:</span></p>
<p class="MsoNormal"><span style="font-family: PMingLiU;" lang=
"ZH-TW">這一個物件可以產生很多的實例,以</span><span style=
"font-family: PMingLiU;" lang="EN-US">uml</span><span style=
"font-family: PMingLiU;" lang=
"ZH-TW">來表示的話,將會是如下圖所示:<br></span></p>
<p class="MsoNormal"><span style="font-family: PMingLiU;" lang=
"ZH-TW">這物件也能夠使用繼承的概念:</span></p>
<p class="MsoNormal"><span style="font-family: PMingLiU;" lang=
"ZH-TW">如下圖所示:</span></p>
<p class="MsoNormal"><img src="http://www.okjp.net/book/00001.jpg" alt=
""><br></p>
<p class="MsoNormal"><br></p>
<p class="MsoNormal"><span style="font-family: PMingLiU;" lang=
"ZH-TW">繼承的概念在物件導向的程式設計裡是一個非常基要的概念,如同字義所示,繼承是指從父物件繼承了一些特性,然後在子物件裡可以對這些父的特性作修改,或是發展一些新的特性。</span></p>
<p class="MsoNormal"><span style="font-family: PMingLiU;" lang=
"ZH-TW">更簡單的說,就是把各個服務的特性作個整理,將共同的部份抽出來統一成一個檔案,以便將來修改時可以不用同樣的東西改很多次。</span></p>
<p class="MsoNormal">以
上的圖告訴我們,有一個服務,位於ip:192.168.3.69的位置,它需要每天的九點到十六點的這一段時間,以check_http這一個命令來進
行監視。而另外一個服務,位於ip192.168.3.80的位置。除了ip的地址不同之外,其他的需求都是相同的(相同的監視時間,相同的監視命令)<br>
</p>
<p class="MsoNormal">
而使用了繼承之後,我們只需要定義好一個服務,然後讓另外一個服務繼承它。這個時候,我們只需要在另外一個服務上進行修改,而不需要作重覆性的定義命令,及監視的時間,就可以輕鬆的完成另外一個服務的定義。<br>
</p>
<p class="MsoNormal"><br></p>
<p class="MsoNormal"><span style="font-family: PMingLiU;" lang=
"ZH-TW">使用繼承的好處在於設定檔的設定很簡單,而且容易修改。設定檔案也可以變得簡單易懂。<br>
</span></p>
<p class="MsoNormal"><span style="font-family: PMingLiU;" lang=
"ZH-TW"><b>設定檔的整體概念:</b><br></span></p>
<p class="MsoNormal"><span style="font-family: PMingLiU;" lang="ZH-TW">nagios
的deamon啟動之時,會將設定給給讀取進來。至於會讀取那一些設定檔,則是在NAGIOS.CFG這一個檔案裡所定義。也就是說,nagios先讀取
NAGIOS.CFG,然後發現裡頭所記載的設定檔名稱,然後在一個一個的將這些名稱上所指定的設定檔,一一的讀進來。<br>
</span></p>
<p class="MsoNormal"><span style="font-family: PMingLiU;" lang=
"ZH-TW">nagios的設定檔我們下章才會談到,但是為了在進行設定之前有一個完整的概念,我們先打開這一個檔案,在開頭的位置,有著一堆以</span><span style="font-family: PMingLiU;"
lang="ZH-TW">cfg_file開頭的文字。</span><span style=
"font-family: PMingLiU;" lang="ZH-TW">比方說,在我的</span><span style=
"font-family: PMingLiU;" lang=
"ZH-TW">NAGIOS.CFG設定裡,就有著如下方所示的文字:</span></p>
<blockquote>
<p class="MsoNormal"><span style="font-family: PMingLiU;" lang=
"ZH-TW"><b><span style=
"color: rgb(51, 102, 102);">cfg_file=/usr/local/nagios/etc/contactgroups.cfg</span><br style="color: rgb(51, 102, 102);">
<span style=
"color: rgb(51, 102, 102);">cfg_file=/usr/local/nagios/etc/contacts.cfg</span><br style="color: rgb(51, 102, 102);">
<span style=
"color: rgb(51, 102, 102);">#cfg_file=/usr/local/nagios/etc/dependencies.cfg</span><br style="color: rgb(51, 102, 102);">
<span style=
"color: rgb(51, 102, 102);">#cfg_file=/usr/local/nagios/etc/escalations.cfg</span><br style="color: rgb(51, 102, 102);">
<span style=
"color: rgb(51, 102, 102);">cfg_file=/usr/local/nagios/etc/hostgroups.cfg</span><br style="color: rgb(51, 102, 102);">
<span style=
"color: rgb(51, 102, 102);">cfg_file=/usr/local/nagios/etc/hosts.cfg</span><br style="color: rgb(51, 102, 102);">
<span style=
"color: rgb(51, 102, 102);">cfg_file=/usr/local/nagios/etc/services.cfg</span><br style="color: rgb(51, 102, 102);">
<span style=
"color: rgb(51, 102, 102);">cfg_file=/usr/local/nagios/etc/timeperiods.cfg</span></b><br>
</span></p>
</blockquote>
<p class="MsoNormal"><span style="font-family: PMingLiU;" lang=
"ZH-TW">在這裡的</span><span style="font-family: PMingLiU;" lang=
"ZH-TW">cfg_file後方所緊接著的,就是設定檔的名稱。你可以將所有的設定檔寫在唯一一個檔案裡,也可以依照設定檔的內容不同,使用複數的檔案來作分類。和所有的linux的習慣一樣,#開頭的代表是註釋,不會被nagios的程式所讀進去。<br>
</span></p>
<p class="MsoNormal">
nagios啟動時,就會依照這裡所定義的次序,一個一個的將設定檔裡的內容給讀取進來。<br>
</p>
<p class="MsoNormal">
我們這裡是將各項目分類成不同的檔案,比方說,<span style=
"font-family: PMingLiU;" lang="ZH-TW"><b><span style=
"color: rgb(51, 102, 102);">services.cfg</span></b></span>就是用來定義服務,<span style="font-family: PMingLiU;"
lang="ZH-TW"><b><span style=
"color: rgb(51, 102, 102);">hosts.cfg</span></b></span>就是用來定義主機。這樣的定義可以讓我們作一個初步的分類,而且想要修改那一個項目,打開該項目所存在的檔案,馬上就可以找到要修改的位置。<br>
如果你是一位忙碌的網管,這種分類方式在面對有上百台機需要管理時,是相當管用的。但是對於初學者,如果你覺得每個檔案都要進行設定很麻煩,想要將這些東西全部寫在一個檔案裡,也是個可行的方法。<br>
就好像我們在寫程式一樣,在實現某個邏輯時,將程式的內容,寫成由分成很多個含式來處理,各含式都有名確的定義。也可以只用一個含式來處理,雖然這樣一來
此function有可能會有很多程式碼,但是如果你想要實現的邏輯是相當的簡單的話,什麼物件導向,設計模式的理論都變得有點多餘,寫成一個含式是最快
最簡單的。<br></p>
<p class="MsoNormal">
在接下來我們要進行的說明裡,你可以用一個檔案來包括,也可以分成很多個檔案。這些檔案具有一些特性。<br>
●註釋是用 # 來開頭<br>
也就是你如果想要寫註釋,或是想把一行的設定先隱藏起來時,你可以用這個方法。但是有一些需要注意的點。<br>
好的例子:<br></p>
<p class="MsoNormal">#host_name win1<br>
不好的例子:<br>
# host_name win1<br>
如果之間出現空隔,nagios會出現錯誤訊息。<br></p>
<p class="MsoNormal">Error: Invalid service object directive '#'.<br></p>
<p class="MsoNormal">●空檔案是ok的。<br></p>
<p class="MsoNormal">比方說你在nagios.cfg裡<br>
<span style="font-family: PMingLiU;" lang="ZH-TW"><b><span style=
"color: rgb(51, 102, 102);">cfg_file=/usr/local/nagios/etc/contactgroups.cfg</span></b></span><br>
</p>
<p class="MsoNormal">設定了這樣的一行。<br>
但是你一時間又沒有想要對<span style="font-family: PMingLiU;" lang=
"ZH-TW"><b><span style=
"color: rgb(51, 102, 102);">contactgroups.cfg</span></b></span>裡頭的內容來作定義。此時你可以讓這個檔案空白。nagios不會出錯。<br>
</p>
<p class="MsoNormal">
這些檔案的定義方式,可以以下列的模板來表示:<br></p>
<p class="MsoNormal">define 物件名{<br></p>
<p class="MsoNormal">屬性 屬性值<br></p>
<p class="MsoNormal">}</p>
<p class="MsoNormal"><br>
這裡的屬性與屬性值之間的區隔,是一個空白字元。也就是你的鍵盤上的一個space鍵。</p>
<p class="MsoNormal">
為什麼不用xml?或許有人會有這種建議。的確,用xml的話或許比較容易理解,不過對於寫程式的人來說,屬
性的後面,隔了一個空白就是屬性值,這種程式比解析xml來得容易至少100倍以上。不過現在現成的xml
parser相當多,所以將來的版本會被那個熱心的工程師,加上xml設定檔的支援也說不定。<br>
</p>
<p class="MsoNormal">
<b>設定時的測式:<br></b>由於設定nagios時需要設定很多的部份。如果你是像我一樣,分成一個一個的檔案分別作設定時,各檔案之間的統合性,比方說在<span style="font-family: PMingLiU;"
lang="ZH-TW"><b><span style=
"color: rgb(51, 102, 102);">timeperiods.cfg</span></b></span>檔案裡定義了一個名為workhour的timeperiod,然後將這個名為workhour
的物件,放在<span style="font-family: PMingLiU;" lang=
"ZH-TW"><b><span style=
"color: rgb(51, 102, 102);">services.cfg</span></b></span>的
檔案裡來使用,這種彼此關連的設定方式,其實對於程式員來說,是非常習以為常的。比方說寫了一個car的物件,然後這個car物件在travel的
method裡被使用。但是程式員寫程式時,可以借由編譯器,也就是所謂的compiler來幫忙檢查錯誤,所以在複雜的邏輯都可以被容易的開發出來。<br>
</p>
<p class="MsoNormal">nagios
雖然沒有所謂的compiler,但是它有提供一個選項(-v),來讓我們測式我們所定義的設定檔群,是否彼此之間都是正確沒有錯誤的。即使在怎麼小心的
人,有時候也會犯一些錯誤,比方說定義了相同名字的物件,或是將文字拼錯,等等的問題。所以這個功能可以說是非常的需要,非常的實用。</p>
<p class="MsoNormal"><br>
這一個命令選項是以如下的方式來被執行:<br></p>
<p class="MsoNormal"><b><span style=
"color: rgb(51, 204, 0);">/usr/local/nagios/bin/nagios-v/usr/local/nagios/etc/nagios.cfg</span></b><br>
</p>
<p class="MsoNormal">
後方一定是跟者nagios.cfg所在的位置,因為就好像我們之前所說的,nagios是先讀進<b><span style="color: rgb(51, 204, 0);">nagios.cfg</span></b>之後,在依照<b><span style="color: rgb(51, 204, 0);">nagios.cfg</span></b>裡頭所指示的,一行一行的讀進來的緣故。<br>
</p>
<p class="MsoNormal">開始設定service<br></p>