楊昌武 曹龍漢
1重慶郵電大學(xué)通信與信息工程學(xué)院 重慶 400065 2重慶通信學(xué)院控制工程重點實驗室 重慶 400035
隨著互聯(lián)網(wǎng)的快速發(fā)展以及信息化的推廣,計算機機房作為信息化的重要標(biāo)志,大量的人力財力投入到機房的建設(shè)上,機房的規(guī)模日益壯大,而機房里面的服務(wù)器設(shè)備也更先進(jìn)數(shù)量更龐大。怎樣有效合理的去管理這么多的服務(wù)器讓其正常運行成了眾多IT運營部門的一道難題,為了保證公司的系統(tǒng)與業(yè)務(wù)能正常運行,很多企業(yè)都需要運維工程師能夠適應(yīng) 7*24小時故障響應(yīng)處理,這無疑給運維工作人員增加了許多負(fù)擔(dān),因此一個能夠?qū)崟r監(jiān)控服務(wù)器狀態(tài)并通過飛信將故障信息發(fā)到系統(tǒng)運維人員的手機就顯得極為重要。Nagios就是一個優(yōu)秀的網(wǎng)絡(luò)監(jiān)控軟件,它是Linux環(huán)境下使用率最高的監(jiān)控軟件,它可以監(jiān)控網(wǎng)絡(luò)服務(wù)、主機資源等。
Nagios自身并沒有網(wǎng)絡(luò)監(jiān)控這部分功能,它所有的監(jiān)控功能都是借助于各種插件來實現(xiàn)的。Nagios提供了許多插件,這些插件放在 nagios主目錄下的/libexec里,在被監(jiān)控的Windows主機里需要安裝NSClient++插件。Nagios可以識別四種狀態(tài)返回信息:OK表示狀態(tài)正常;WARNING表示出現(xiàn)了一定的異常;CRITICAL表示出現(xiàn)了嚴(yán)重錯誤;DOWN表示被監(jiān)控主機已經(jīng)宕機了。Nagios通過插件返回來的值,來確定主機所處的狀態(tài),從而達(dá)到監(jiān)控的效果。Nagaios調(diào)用各插件原理圖如圖1所示。
圖1 Nagios調(diào)用各插件的原理圖
Fetion Robot(飛信機器人)是一款基于中國移動飛信系統(tǒng)開發(fā)的一種IM通訊機器人工具,通過與nagios的結(jié)合可以免費發(fā)送報警短信,Windows/Linux雙平臺支持。文中給出了詳細(xì)的配置步驟。
本文選擇在Centos6.0上來部署nagios。
#groupadd nagios
#useradd -g nagios nagios
#passwd nagios
#mkdir /usr/local/nagios
#chown -R nagios:nagios /usr/local/nagios
#chmod 755 /usr/local/nagios
#usermod -G nagios apache
#usermod -G nagios nagios
在安裝之前確認(rèn)要對該機器擁有root權(quán)限,并且確認(rèn)你安裝好的Linux系統(tǒng)上已經(jīng)安裝好了Apache、Gcc編譯器、GD庫與開發(fā)庫??梢杂脃um命令來安裝這些軟件包。
#yum -y install httpd* gcc* glibc* glibc-common gd gd-devel
wget http://nchc.dl.sourceforge.net/sourceforge/nagios/nagios-3.2.3.tar.gz
wget http://nchc.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz
編譯與安裝nagios
#tar -xzvf nagios-3.2.3.tar.gz
#cd nagios-3.2.3
./configure --prefix=/usr/local/nagios --with-gd-lib=/usr/lib--with-gd-inc=/usr/include --enable-event-broker
#make all
#make all install
#make install-init
#make install-commandmode
#make install-config
安裝nagios-plugins
#tar -zxvf nagios-plugins-1.4.15.tar.gz
#cd nagios-plugins-1.4.15
#./configure --prefix=/usr/local/nagios-plugins
#make
#make install
安裝完成后在/usr/local/nagios-plugins會產(chǎn)生一個libexec的目錄,將該目錄全部移到到/usr/local/nagios目錄下即可。
#mv /usr/local/nagios-plugins/libexec /usr/local/nagios/
#vi /etc/httpd/conf/httpd.conf
加入如下內(nèi)容
####nagios
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user
Alias /nagios "/usr/local/nagios/share"
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user
然后重啟apache
#/etc/rc.d/init.d/httpd restart
設(shè)置登錄密碼
#htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
在被監(jiān)控的Windows主機上安裝NSClient++插件,安裝好后,修改配置文件 NSC.ini,將[modules]部分去掉除CheckWMI.dll和RemoteConfiguration.dll這兩個外的其余模塊前面的注釋,在[settings]部分將allowed_hosts前面的注釋去掉,并加上運行nagios的監(jiān)控主機的Ip,另外將[NSClient]的port選項前面的注釋去掉,這是NSClient的默認(rèn)監(jiān)聽端口,設(shè)置好后,保存,重新啟動服務(wù),這樣Windows端的插件就安裝好了。
把nagios加入到服務(wù)列表中以使在系統(tǒng)啟動時自動啟動
#chkconfig --add nagios
#chkconfig --level 235 nagios on
驗證nagios的樣例配置文件是否正確
#/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
如果沒有報錯,可以啟動nagios服務(wù),注意要關(guān)閉防火墻,將/etc/selinux/config里面selinux設(shè)為disabled,然后重啟系統(tǒng)。
#service nagios start
登錄 http://ip/nagios/ 輸入用戶名和密碼就可以正常訪問nagios監(jiān)控服務(wù)器了,然后就可以在/usr/local/nagios/etc/objects/目錄下面的localhost.cfg中添加需要被監(jiān)控的Linux主機,在 windows.cfg里面添加需要被監(jiān)控的 Windows主機,在contacts.cfg里添加聯(lián)系人,在switch.cfg里添加交換機等等。當(dāng)公司所有被監(jiān)控的主機添加完后,驗證nagios的配置文件是否正確,并重啟nagios服務(wù),就可看到主機狀態(tài)如圖2所示。
圖2 主機狀態(tài)
#mkdir -p /usr/local/fetion/lib
#cd /opt
#wget http://www.it-adv.net/fetion/downng/library_linux.tar.gz
#tar -zxvf library_linux.tar.gz
#cp lib*so* /usr/local/fetion/lib/
#ln -s /usr/local/fetion/lib/libcrypto.so.0.9.8 /usr/local/fetion/lib/libcrypto.so.4
#ln -s /usr/local/fetion/lib/libssl.so.0.9.8/usr/local/fetion/lib/libssl.so.4
#cp /usr/local/fetion/lib/lib* /lib/
#vi /etc/ld.so.conf 加入如下內(nèi)容
/usr/local/fetion/lib
#ldconfig
#wget http://www.it-adv.net/fetion/downng/fetion20091117-linux.tar.gz
#cp http://www.it-adv.net/fetion/downng/fetion20091117-linux.tar.gz/usr/local/fetion/
#tar -zxvf fetion20091117-linux.tar.gz
#chown -R nagios:nagios /usr/local/fetion/fx/fetion
#chown -R +x /usr/local/fetion/fx/fetion
#./fetion
第一次執(zhí)行時可能會提示有些東西沒有安裝,按照提示安裝好即可。如果出現(xiàn)下面畫面,就證明安裝好了。
************************ IMPORTANT
STATEMENT ************************
** **
** PLEASE DON'T USE THIS SOFTWARE TO SEND JUNK SHORT MESSAGES. **
** OTHERWISE PLEASE BEAR YOUR OWN CONSEQUENCES. **
** **
** Version:[20100721003-linux] **
*********************************************************************
可以測試給自己發(fā)短信
#./fetion --mobile=********** --pwd=****** --to=*********** --msg-utf8="just a test"
第一次需要輸入驗證碼,在/usr/local/fetion/fx下面有一個 158********.jpg的圖片,輸入驗證碼即可。注意,由于版本或協(xié)議問題,如果發(fā)不出去飛信,到飛信論壇下載執(zhí)行程序 fetion,然后復(fù)制到原來安裝地方,覆蓋掉原來安裝的fetion執(zhí)行程序就可,出現(xiàn)如下畫面表示飛信發(fā)送成功。
SIP-C/4.0 280 Send SMS OK
T: sip:416681618@fetion.com.cn;p=7712
#vi /usr/local/nagios/etc/objects/commands.cfg
在文件的最后面添加如下內(nèi)容:
#'notify-host-by-fetion' command definition
define command{
command_name notify-host-by-fetion
command_line /usr/local/fetion/fx/fetion
--mobile=158******** --pwd=******* --to=158******** --msgtype=1 --msg-utf8="Host $HOSTSTATE$ alert for $HOSTNAME$!on '$LONGDATETIME$'" $CONTACTPAGER$
}
# 'notify-service-by-fetion' command definition
define command{
command_name notify-service-by-fetion
command_line /usr/local/fetion/fx/fetion
--mobile=158******** --pwd=****** --to=158******** --msgtype=1 --msg-utf8="$HOSTADDRESS$ $HOSTALIAS$/$SER VICEDESC$ is $SERVICESTATE$ on $LONGDATETIME"$CONTACTPAGER$
}
define contact{
contact_name yangchangwu
use generic-contact
alias Nagios Admin
service_notification_commands notify-service-by-fetion
host_notification_commands notify-host-by-fetion
pager 158********
}
修改好后,保存離開,檢查有沒有報錯,然后重啟nagios服務(wù),這樣手機就可以收到報警短信了。
本文詳細(xì)的研究并實現(xiàn)了 Linux下 nagios與飛信的配置,并指出了其中容易出錯的地方。在不超過 1000臺服務(wù)器的情況下,利用飛信和nagios網(wǎng)絡(luò)監(jiān)控系統(tǒng)進(jìn)行系統(tǒng)管理,可以大大減輕運維人員的工作量,提高工作效率,最重要的是能及時發(fā)現(xiàn)異常,快速處理,保證公司業(yè)務(wù)正常進(jìn)行。
[1]晨曦?zé)o痕.Nagios的安裝與配置并實現(xiàn)飛信報警[EB/OL].http://bbs.linuxtone.org/forum.php?mod=viewthread&tid=9569.
[2]站長之家.Nagios網(wǎng)絡(luò)監(jiān)控工作原理[EB/OL].http://os.51cto.com/art/201103/251079.htm.
[3] wwwsky86.Nagios 3.2.0配置[EB/OL].http://bbs.linuxtone.org/forum.php?mod=viewthread&tid=7519.
[4]傅宇旭.Apache服務(wù)器配置與管理[M].北京:清華大學(xué)出版社.2002.
[5] How To Monitor Remote Windows Machine Using Nagios on Linux. [EB/OL].http://www.thegeekstuff.com/2008/07/howto-monitor-remote-windows-machine-using-nagios-on-linux/.
[6]Nagios Is The Industry Standard In IT Infrastructure Monitoring.http://www.nagios.org/.