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