劉丹,崔陽
(1.南海艦隊參謀部,湛江 524001;2.中國勞動關(guān)系學(xué)院大數(shù)據(jù)與安全研究所,北京 100048)
當(dāng)前大多數(shù)企業(yè)的局域網(wǎng)中都部署了多臺服務(wù)器和主機,以實現(xiàn)信息共享、數(shù)據(jù)備份、并行計算、負(fù)載平衡等各種功能。怎樣實時、可靠地監(jiān)控這些服務(wù)器和主機的工作狀態(tài),當(dāng)局域網(wǎng)中出現(xiàn)問題時能夠及時、準(zhǔn)確地將故障機的相關(guān)信息發(fā)送給網(wǎng)絡(luò)管理人員,就成為企業(yè)面臨的一個重要問題。以往人工監(jiān)控的方式效率低下,也無法應(yīng)對一些對局域網(wǎng)監(jiān)控要求較高的場合(例如很多企業(yè)的局域網(wǎng)要求做到7×24小時全天候監(jiān)控)。成熟的商業(yè)化服務(wù)器監(jiān)控系統(tǒng)產(chǎn)品盡管功能強大,但價格通常較昂貴,且無法根據(jù)企業(yè)的具體應(yīng)用需求對功能加以拓展[1]。在這種情況下,采用開源的Nagios、Zabbix等系統(tǒng)監(jiān)控軟件就成為首選。
Nagios配置靈活、監(jiān)控和報警機制完善,可以非常好地滿足企業(yè)局域網(wǎng)監(jiān)控的各種需求;且Nagios較Zabbix更適用于規(guī)模大、IT環(huán)境復(fù)雜的企業(yè)局域網(wǎng)[2]。但同時,Nagios的配置過程較復(fù)雜,期間可能遇到的問題較多,這也給Nagios的順利使用帶來了很大困難。
Nagios主要包括 Core、Plugins、Frontends和 Addon Projects四部分。其中Core是實現(xiàn)Nagios功能的核心部分。Plugins用于擴展Nagios的功能,沒有插件Nag?ios將無法起作用[3]。除了下載常用的插件外,用戶還可以基于實際需求編寫自己的插件。Frontends是前端工具,可以方便用戶使用Nagios。Addon Projects則用于擴展Nagios的基礎(chǔ)功能。Nagios能夠監(jiān)控所指定的本地或遠(yuǎn)程服務(wù)器和主機,并提供短信、微信通知提醒等報警功能。同時Nagios還提供一個可選的基于瀏覽器的Web界面,以便系統(tǒng)管理人員查看網(wǎng)絡(luò)狀態(tài)、各種系統(tǒng)問題以及日志等信息。但要注意Nagios只能安裝并運行在Linux或Unix平臺上[4]。
Nagios的監(jiān)控主要有兩種形式:直接監(jiān)控和間接監(jiān)控。直接監(jiān)控是由Nagios監(jiān)控機使用本地監(jiān)控插件對局域網(wǎng)中的服務(wù)器或主機進行監(jiān)控,但這種方式只能檢測到被監(jiān)控機已經(jīng)開放的服務(wù),而無法檢測到其本地信息。因此Nagios提供了一個NRPE和一個NSClient++分別用于對操作系統(tǒng)為Linux和Windows的被監(jiān)控機本地信息進行監(jiān)控[5]。圖1給出了Nagios直接監(jiān)控的簡單原理。
圖1 Nagios直接監(jiān)控原理示意圖
Nagios間接監(jiān)控是指當(dāng)網(wǎng)絡(luò)中運行Nagios的監(jiān)控機無法訪問到某臺被監(jiān)控機時,就通過某個運行NRPE的計算機充當(dāng)代理,將監(jiān)控請求發(fā)送至被監(jiān)控機。但由于監(jiān)控機與被監(jiān)控機通常都處于同一網(wǎng)絡(luò)中,所以間接監(jiān)控的情況較少見。
Nagios的安裝過程比較簡單,只需在監(jiān)控機的Linux環(huán)境中下載Nagios和Nagios-plugins壓縮包,解壓縮后再逐步執(zhí)行相應(yīng)的安裝命令即可。為了能夠使用Web界面直觀展示被監(jiān)控機的各項監(jiān)控信息,可以安裝Apache作為Web服務(wù)器。此外,為實現(xiàn)對被監(jiān)控機本地信息的監(jiān)控,還需要在監(jiān)控機上安裝NRPE,同時根據(jù)被監(jiān)控機不同的操作系統(tǒng)分別安裝NRPE或NSClient++。
上述軟件安裝完成后都需要進行驗證。對于Nag?ios和Nagios-plugins來說,可以在Nagios的安裝路徑(例如/usr/local/nagios)下查看是否存在 etc、bin、sbin、share、var這五個目錄,如果是則表明Nagios已正確安裝;同時在/nagios/libexec/目錄下也會顯示出所有已安裝的插件文件。Apache服務(wù)器則可以在其安裝目錄下執(zhí)行apachectl-t命令,如果沒有提示出錯就表明Apache已正確安裝。NRPE和NSClient++的區(qū)別是:NRPE需要同時在監(jiān)控機和被監(jiān)控機上安裝,而NSCli?ent++只需在被監(jiān)控機安裝。完成后可以使用check_nrpe-H或check_nt-H命令來測試NRPE和NSClient++功能是否正常。
Nagios-plugins中包含了大量插件,它們是一些實現(xiàn)特定功能的可執(zhí)行程序,可以獲取已被定義的各個被監(jiān)控機的磁盤、負(fù)載、進程、用戶等各種信息。局域網(wǎng)中哪些服務(wù)器和主機以及哪些信息需要被監(jiān)控都可以通過對Nagios的配置實現(xiàn)。Nagios的配置文件是一些以.cfg為后綴名的文件,包括nagios.cfg(Nagios的主配置文件)、cgi.cfg、timeperiods.cfg、contacts.cfg、contact?groups.cfg、hosts.cfg、hostgroups.cfg、services.cfg、com?mands.cfg等[6]。nagios.cfg中定義了Nagios啟動時基本的一些信息。除此之外,最重要的配置文件還有hosts.cfg、services.cfg和commands.cfg,它們分別定義了被監(jiān)控機、監(jiān)控項目和各種監(jiān)控命令。在NRPE和NSCli?ent++的配置文件則是定義對哪些信息進行監(jiān)控以及實現(xiàn)這些監(jiān)控的命令,監(jiān)控機借助check_nrpe或check_nt插件即可獲取到這些信息。
例如,定義一個被監(jiān)控機需要在hosts.cfg文件中添加下列語句:
為上述主機名為linux-server的被監(jiān)控機增加一個監(jiān)控項目(如FTP),可在services.cfg加入以下代碼:
配置全部完成后,使用/usr/local/nagios/bin/nagiosd/usr/local/nagios/etc/nagios.cfg命令將Nagios作為守護進程從后臺啟動,并可以使用ps aux|grep nagios命令檢查進程正確啟動并處于運行狀態(tài)。此外,對Apache也要進行配置,以使其能夠用于Nagios服務(wù)。方法是首先在Apache的配置文件httpd.conf中增加nagios目錄,并且設(shè)置訪問此目錄時需要身份驗證。之后生成用戶驗證文件,并創(chuàng)建通過頁面登錄Nagios的用戶名和密碼。之后啟動Apache服務(wù),在監(jiān)控主機端打開瀏覽器,并在地址欄輸入http://localhost/nagios,如果配置正確則可看到Nagios的登錄界面。輸入生成的用戶名和密碼即可進入監(jiān)控頁面。如圖2所示。
圖2 監(jiān)控主機的Nagios監(jiān)控頁面
單擊頁面左方的“Monitoring”,則主監(jiān)控界面顯示局域網(wǎng)中被監(jiān)控的服務(wù)器和主機及設(shè)定的各項監(jiān)控信息。如圖3所示。
圖3 Nagios顯示的監(jiān)控信息
Nagios的配置過程中經(jīng)常會出現(xiàn)各種問題,使監(jiān)控功能無法正常實現(xiàn)。這一方面需要在配置Nagios時隨時注意檢查配置結(jié)果的正確性,另一方面要求對一些常見問題有所了解。例如,在配置nagios.cfg文件時,應(yīng)該隨時使用Nagios提供的nagios-v命令測試Nagios.cfg文件是否有錯誤,如果命令運行結(jié)果顯示為“Total Warnings:0 Total Errors:0 Things look okay-No serious problems were detected during the pre-flight check”,則表示無錯;反之則應(yīng)根據(jù)錯誤提示信息對配置內(nèi)容進行逐項檢查。在Apache安裝并配置完成后也可以使用apachctl-t命令檢查Apache配置文件是否存在語法錯誤,若發(fā)現(xiàn)錯誤應(yīng)及時修改,等等。
總結(jié)Nagios常見的配置問題主要有:
(1)各項配置正確,但登錄Nagios監(jiān)控頁面后提示Nagios進程不能啟動。對于這種問題,可以通過監(jiān)控頁面左下方的Reporting->Event Log查看日志,找到錯誤提示信息。如果提示“nagios/var目錄讀寫權(quán)限不足”,可以使用#chown-R nagios.nagios rw/和#chmod 777-R rw/命令提升該目錄的讀寫權(quán)限;如果提示“某一進程占據(jù)nagios.lock文件”,則可以使用kill命令終止占據(jù)nagios.lock的進程并重啟Nagios進程。其他錯誤也可以通過查看日志提示的類似方法加以解決。
圖4 Nagios日志記錄
(2)監(jiān)控機無法讀取Windows系統(tǒng)的被監(jiān)控機信息。首先應(yīng)檢查NSClient++進程和12489端口是否都運行正常,如正常應(yīng)查看被監(jiān)控機NSClient++目錄的nsclient.log文件,如果發(fā)現(xiàn)“Unauthorized access from:”的提示信息,則將NSC.ini文件中[Settings]一項的al?lowed_hosts設(shè)置為null,即允許局域網(wǎng)中所有計算機都訪問。
(3)監(jiān)控機安裝NRPE時遇到OpenSSL安裝錯誤??蓤?zhí)行#apt-get install openssl和#apt-get install libssl-dev,將openssl和libssl-dev裝好。如果這之后仍有“SSL libraries...configure”錯誤,則繼續(xù)執(zhí)行#ln-s/usr/lib/x86_64-linux-gnu/libssl.so/usr/lib/libssl.so和#./configure--with-ssl=/usr/bin/openssl--with-ssl-lib=/usr/lib i386/-linux-gnu/命令即可。
(4)Apache無法啟動。如果啟動Apache時遇到“Httpd Could not reliably determine the server`s fully qualified domain name”的錯誤信息提示,則應(yīng)在httpd.conf文件中加入一句 ServerName localhost:80,然后重啟Apache即可。
此外,還有很多問題是在配置過程中隨時出現(xiàn)的,可能涉及到TCP/IP協(xié)議棧的正確配置、Nagios及其插件安裝包目錄設(shè)置等多方面,應(yīng)根據(jù)實際情況具體加以解決,這里不再贅述。
Nagios在網(wǎng)絡(luò)監(jiān)控方面的強大功能需要在充分滿足其配置要求的基礎(chǔ)上才能最大程度地發(fā)揮出來。本文介紹的Nagios配置過程以及對這一過程中常見問題分析有助于更好地構(gòu)建Nagios局域網(wǎng)監(jiān)控平臺,這些方法業(yè)已在實踐中得到了較好的應(yīng)用。