2014年2月21日

網管的好幫手-Nagios 【圖形管理篇】

有安裝過Nagios Core的工程師們,印象最深的大概就是在第一次安裝完之後,不知道如何下手設定要監控的對象了。

一方面要搞懂command.cfg該怎麼設,有那些參數要加到service上。再來就是Host、Service、Host Group、Service Group以及Template之間的恩怨情仇了,Host跟Service各需要那些Directives,檔案的分割要設計得有彈性,還是方便就好。諸如此類的設定要一一紀錄下來,再用vi去編輯,往往一項服務的監控還沒搞定,天都黑一半了。

所幸NagiosQL的橫空出世,讓初次進入Nagios世界的網管們,不必在command line與vi之間糾結,可以用Web界面輕鬆設定要監控的Host與Service。

雖然受限於Nagios Core本身對監控Host與Service的設定檔要求,有時候仍會造成config檔檢查不通過,而必須重新檢視所有設定檔的狀況。但比起在一堆設定檔的亂麻中,找不出開始的那根線,絕對是要好上無數倍的選擇。

首先取得NagiosQL最新版3.2.0的原始安裝檔以及SP2更新檔,放置於/tmp中。
cd /tmp
wget http://nchc.dl.sourceforge.net/project/nagiosql/nagiosql/NagiosQL%203.2.0/nagiosql_320.tar.gz
wget http://www.nagiosql.org/files/category/3-download-patches.html?download=14:servicepack-2-for-nagiosql-3-2-0
因SP2下載連結之故,下載的檔名被更名為連結URL,故我們先手動更換檔名。
mv 3-download-patches.html?download=14:servicepack-2-for-nagiosql-3-2-0 nagiosql-3-2-0-sp2.zip
完成後,先解開nagiosql_320.tar.gz,再將所有檔案複製到Ubuntu預設apache root (/var/www/)底下的nagiosql資料夾中。
tar zxvf  nagiosql_320.tar.gz
mkdir /var/www/nagiosql
cp -r /tmp/nagiosql32/* /var/www/nagiosql/

接著將sp2更新檔解壓縮後,直接覆蓋原先的nagiosql檔案,最後再修改nagiosql資料夾的所有者。
unzip nagiosql-3-2-0-sp2.zip
cp -f -r /tmp/NagiosQL_3.2.0_SP2/* /var/www/nagiosql/
chown -R www-data.www-data /var/www/nagiosql/

完成上述程序,NagiosQL的網頁已完成安裝程序,但因為NagiosQL會改變原先放置Nagios設定檔的位置,所以我們要手動建立新的Nagios設定檔目錄。
mkdir /etc/nagiosql
mkdir /etc/nagiosql/hosts
mkdir /etc/nagiosql/services
mkdir /etc/nagiosql/backup
mkdir /etc/nagiosql/backup/hosts
mkdir /etc/nagiosql/backup/services
同時NagiosQL是以apache為底層在運作,其所用的帳號為Ubuntu apache的預設服務帳號www-data,與Nagios的服務帳號nagios不同,所以接下來要開始修改nagios相關的目錄及檔案權限。

1. 修改Nagios相關檔案之權限
chown -R www-data.nagios /etc/nagios/nagios.cfg
chown -R www-data.nagios /etc/nagios/cgi.cfg
chown -R www-data.nagios /etc/nagios/resource.cfg
chown -R www-data.nagios /usr/local/nagios/var/rw/nagios.cmd
chown -R www-data.nagios /usr/local/nagios/var/spool/checkresult
chmod  /etc/nagios
chmod 640 /etc/nagios/nagios.cfg
chmod 640 /etc/nagios/cgi.cfg
chmod 640 /etc/nagios/resource.cfg
chmod 660 /usr/local/nagios/var/rw/nagios.cmd

2. 修改NagiosQL中Nagios相關設定檔放置目錄之權限
chown -R www-data.nagios /etc/nagiosql
chmod 6755 /etc/nagiosql
chmod 6755 /etc/nagiosql/hosts
chmod 6755 /etc/nagiosql/services
chmod 6755 /etc/nagiosql/backup
chmod 6755 /etc/nagiosql/backup/hosts
chmod 6755 /etc/nagiosql/backup/services

完成上述權限設定後,就可以用http://[nagios server ip]/nagiosql/install連上NagiosQL的設定頁面啦!按下下方的START INSTALLATION按鈕,就可以開始進行設定了。
一路照著文件設定下來,應該在這個檢測頁面會有兩項錯誤,不解決的話,可是沒辦法再往下設定的喲!
解決方式如下:
1. data timezone: NOT AVAILABLE
指的是php的設定中沒指定時區,所以直接到console上去編輯/etc/php5/apache2/php.ini
找到date.timezone這行後,先將前方的";"刪除,再輸入台灣的時區名稱"Asia/Taipei"。
存檔離開後,輸入以下指令重開apache服務。
service apache2 restart
2. Write test on settings directory (config): Failed
一樣在console中下以下指令,將NagiosQL的config目錄權限改成可供apache服務帳號寫入。
chmod 750 /var/www/nagiosql/config/

解決上述兩個問題,重新回到設定頁面後,底下的按鈕就會變成綠色的箭頭啦!
接下來就只要輸入Administrative Database Password;NagiosQL的預設帳號及密碼
最後別忘了將底下兩個紅框給勾選起來,讓NagiosQL可載入Nagios預設的監控設定以及確認Nagios及NagiosQL的設定檔放置位置。
完成後就點綠色箭頭進行最後的確認囉!
看到底下這個畫面就表示:哦耶!大功告成,準備脫離command line的魔掌啦!
但是別高興得太早,還有一些後期安裝的程序要完成。
首先,這個網頁的下方有提示我們,記得把Install目錄給刪除了,這是為了保證日後不會有其他人利用這個網頁亂搞。回到console下底下的指令:
rm -rf /var/www/nagiosql/install
完成後回網頁按下底下的箭頭,給系統一些時間完成mysql的對應table建立後,就可以用http://[nagios server IP]/nagiosql/ 來連上NagiosQL網頁囉!
輸入先前在設定頁面中指定的管理員帳號及密碼,就可以登入NagiosQL了。
登入後還有兩項設定要完成。
首先將Nagios的監控設定檔路徑修改成先前建立的/etc/nagiosql/ 底下。
Tools => Nagios Config 進行Nagios.cfg的修改。

1. 將原本的監控設定檔停用(在以下設定前加上 "#")
#cfg_file=/usr/local/nagios/etc/objects/commands.cfg
#cfg_file=/usr/local/nagios/etc/objects/contacts.cfg
#cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
#cfg_file=/usr/local/nagios/etc/objects/templates.cfg
#cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
2. 將監控設定檔路徑指向NagiosQL之下
新增下列設定到nagios.cfg中。
## Timeperiods
cfg_file=/etc/nagiosql/timeperiods.cfg
## Commands
cfg_file=/etc/nagiosql/commands.cfg
## Contacts
cfg_file=/etc/nagiosql/contacts.cfg
cfg_file=/etc/nagiosql/contactgroups.cfg
cfg_file=/etc/nagiosql/contacttemplates.cfg
## Hosts
cfg_dir=/etc/nagiosql/hosts
cfg_file=/etc/nagiosql/hosttemplates.cfg
cfg_file=/etc/nagiosql/hostgroups.cfg
cfg_file=/etc/nagiosql/hostextinfo.cfg
cfg_file=/etc/nagiosql/hostescalations.cfg
cfg_file=/etc/nagiosql/hostdependencies.cfg
## Services
cfg_dir=/etc/nagiosql/services
cfg_file=/etc/nagiosql/servicetemplates.cfg
cfg_file=/etc/nagiosql/servicegroups.cfg
cfg_file=/etc/nagiosql/serviceextinfo.cfg
cfg_file=/etc/nagiosql/serviceescalations.cfg
cfg_file=/etc/nagiosql/servicedependencies.cfg


完成上述修改後,記得按下Save按鈕,這樣才會真正寫入系統的nagios.cfg檔案中。
第二項設定是因為先前的Nagios是用原始安裝檔,非Ubuntun發佈之套件進行安裝。因此必須告訴NagiosQL Nagios檔案的正確路徑。
接下來,就由 Administration => Config targets 中,點選 localhost 右方的修改圖示。
要修改的內容如下:
Nagios command file: /usr/local/nagios/var/rw/nagios.cmd
Nagios binanry file: /usr/local/nagios/bin/nagios
Nagios process file: /usr/local/nagios/var/nagios.lock
修改完成後,按下底下的 Save 按鈕,儲存變更。
這樣就完成所有NagiosQL的設定了,接下來就讓我們試試它的功能先!

對於Nagios的控制,都是在 Tools => Nagios Control 中進行。
第一次使用時,有可能部份監控設定檔尚未正常產生,所以最好先執行一次 "Write monitoring data" 以及 "Write additional data"兩個功能後方的 Do it 按鈕。日後若是有大量更新監控設定檔時,亦最好依此方式執行。
再來就是讓NagiosQL檢查監控設定檔是否正確無誤,請點選"Check configuration files"後方的Do it按鈕。
底下就是有發生問題時的範例,由紅字描述可得知,應該是NagiosQL寫入temp_path 以及 check_result_path("/usr/local/nagios/var/spool/checkresults")時權限不足,這時就用console到上述目錄去下ls -al去檢查所有者及群組是否正確。
若先前忘了改所有者及群組的話,用底下的指令進行修改。
chown -R www-data.nagios /usr/local/nagios/var/spool/checkresult
完成後,再執行一次就應該會出現如下圖的正常訊息。
接下來就只要Restart Nagios就可以重新啟動Nagios服務,以套用新的監控設定檔或Nagios.cfg或cgi.cfg的設定了。
註:NagiosQL目前不能對Nagios的resource.cfg進行設定,因為rescource.cfg中通尚包含作為認證用的變數值,例如:SNMP的Community String或其他主機的帳號密碼。為了安全起見,這個檔案只能用console進行編輯。
除此之外其他的設定檔都能正常編輯及套用。

以上就算完成NagiosQL的安裝與設定了,至於如何規畫及利用NagiosQL來實作主機或系統的監控,這部份會留在第四篇-進階監控篇說明。

不過可以大概說明一下,透過NagiosQL產生監控設定檔的操作程序,基本上會由修改次數少的開始進行。
另外,當該項目(如:Host或Service)所有設定新增完成後,別忘了按列表頁面下方的Write all config files按鈕,去產生對應的設定檔後,再進Tools檢查設定並重新啟動Nagios服務,這樣才會真正被Nagios所套用。

  1. 決定Time PeriodContactContact GroupContact Template是否要修改 (在 Alarming 底下)
  2. 決定是否要套用Service/Host Template及其預設Directives 是否要修改,套用Template可以降低每個Host必要Directives重複設定動作 ( Supervision => Host/Service Templates )
  3. 建立個別Host (設定監控主機),並決定是否要應用Host Group (之後可套用在Service,降低設定每個Service對應的Host之設定複雜度)及是否套用Host Template ( Supervision => Host/Host Group)
  4. 建立個別Service (設定監控項目,如HTTP, Ping等等),並決定應用在那些Host/Host Group,並套用何種Service Template。為了Nagios頁面顯示的簡潔與否,可以將特定Service與Host/Host Group綁定成一組Service Group。如此一來,在Nagios頁面上就可以應用Service Group來檢視個別群組的對應服務 (Supervision => Service/Service Group)
  5. 若Service須要應用非預設的command,則必須在建立Service前先修改command.cfg ( Commands => Definitions ),再建立Service監控新建的command。若是command中要代入一些驗證資訊(帳號/密碼/Community String)的話,可考慮由Console去編輯/etc/nagios/resource.cfg,依Sample resource.cfg的說明去新增$USERn$的Macro來應用在command.cfg中。

若是嫌上述文字說明太冗長,可以參考底下這張來自http://www.semintelligent.com/的圖,應該就會有比較完整的概念。

完成NagiosQL的設定後,就可以開始設定所有的監控主機及監控服務,但Nagios Core預設的呈現資料,是只有顯示最近一次收集到的數據及狀況。對於要進行趨勢分析以及建立正常基準線(Baseline)來說,是不夠用的。
這時候就可以配合pnp4nagios或nagiosgraph這類圖形報表產製套件,來產生各時幅的直方圖以進行分析比較。

下一篇就以應用彈性較高的pnp4nagios,說明如何安裝/設定這個強大的套件。

沒有留言:

張貼留言

本部落格版權宣告

創用 CC 授權條款
自由人、自由事Freeman Lee製作,以創用CC 姓名標示 4.0 國際 授權條款釋出。