劉丹,崔陽
(1.南海艦隊參謀部,湛江 524001;2.中國勞動關系學院大數據與安全研究所,北京 100048)
當前大多數企業的局域網中都部署了多臺服務器和主機,以實現信息共享、數據備份、并行計算、負載平衡等各種功能。怎樣實時、可靠地監控這些服務器和主機的工作狀態,當局域網中出現問題時能夠及時、準確地將故障機的相關信息發送給網絡管理人員,就成為企業面臨的一個重要問題。以往人工監控的方式效率低下,也無法應對一些對局域網監控要求較高的場合(例如很多企業的局域網要求做到7×24小時全天候監控)。成熟的商業化服務器監控系統產品盡管功能強大,但價格通常較昂貴,且無法根據企業的具體應用需求對功能加以拓展[1]。在這種情況下,采用開源的Nagios、Zabbix等系統監控軟件就成為首選。
Nagios配置靈活、監控和報警機制完善,可以非常好地滿足企業局域網監控的各種需求;且Nagios較Zabbix更適用于規模大、IT環境復雜的企業局域網[2]。但同時,Nagios的配置過程較復雜,期間可能遇到的問題較多,這也給Nagios的順利使用帶來了很大困難。
Nagios主要包括 Core、Plugins、Frontends和 Addon Projects四部分。其中Core是實現Nagios功能的核心部分。Plugins用于擴展Nagios的功能,沒有插件Nag?ios將無法起作用[3]。除了下載常用的插件外,用戶還可以基于實際需求編寫自己的插件。Frontends是前端工具,可以方便用戶使用Nagios。Addon Projects則用于擴展Nagios的基礎功能。Nagios能夠監控所指定的本地或遠程服務器和主機,并提供短信、微信通知提醒等報警功能。同時Nagios還提供一個可選的基于瀏覽器的Web界面,以便系統管理人員查看網絡狀態、各種系統問題以及日志等信息。但要注意Nagios只能安裝并運行在Linux或Unix平臺上[4]。
Nagios的監控主要有兩種形式:直接監控和間接監控。直接監控是由Nagios監控機使用本地監控插件對局域網中的服務器或主機進行監控,但這種方式只能檢測到被監控機已經開放的服務,而無法檢測到其本地信息。因此Nagios提供了一個NRPE和一個NSClient++分別用于對操作系統為Linux和Windows的被監控機本地信息進行監控[5]。圖1給出了Nagios直接監控的簡單原理。

圖1 Nagios直接監控原理示意圖
Nagios間接監控是指當網絡中運行Nagios的監控機無法訪問到某臺被監控機時,就通過某個運行NRPE的計算機充當代理,將監控請求發送至被監控機。但由于監控機與被監控機通常都處于同一網絡中,所以間接監控的情況較少見。
Nagios的安裝過程比較簡單,只需在監控機的Linux環境中下載Nagios和Nagios-plugins壓縮包,解壓縮后再逐步執行相應的安裝命令即可。為了能夠使用Web界面直觀展示被監控機的各項監控信息,可以安裝Apache作為Web服務器。此外,為實現對被監控機本地信息的監控,還需要在監控機上安裝NRPE,同時根據被監控機不同的操作系統分別安裝NRPE或NSClient++。
上述軟件安裝完成后都需要進行驗證。對于Nag?ios和Nagios-plugins來說,可以在Nagios的安裝路徑(例如/usr/local/nagios)下查看是否存在 etc、bin、sbin、share、var這五個目錄,如果是則表明Nagios已正確安裝;同時在/nagios/libexec/目錄下也會顯示出所有已安裝的插件文件。Apache服務器則可以在其安裝目錄下執行apachectl-t命令,如果沒有提示出錯就表明Apache已正確安裝。NRPE和NSClient++的區別是:NRPE需要同時在監控機和被監控機上安裝,而NSCli?ent++只需在被監控機安裝。完成后可以使用check_nrpe-H或check_nt-H命令來測試NRPE和NSClient++功能是否正常。
Nagios-plugins中包含了大量插件,它們是一些實現特定功能的可執行程序,可以獲取已被定義的各個被監控機的磁盤、負載、進程、用戶等各種信息。局域網中哪些服務器和主機以及哪些信息需要被監控都可以通過對Nagios的配置實現。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,它們分別定義了被監控機、監控項目和各種監控命令。在NRPE和NSCli?ent++的配置文件則是定義對哪些信息進行監控以及實現這些監控的命令,監控機借助check_nrpe或check_nt插件即可獲取到這些信息。
例如,定義一個被監控機需要在hosts.cfg文件中添加下列語句:

為上述主機名為linux-server的被監控機增加一個監控項目(如FTP),可在services.cfg加入以下代碼:

配置全部完成后,使用/usr/local/nagios/bin/nagiosd/usr/local/nagios/etc/nagios.cfg命令將Nagios作為守護進程從后臺啟動,并可以使用ps aux|grep nagios命令檢查進程正確啟動并處于運行狀態。此外,對Apache也要進行配置,以使其能夠用于Nagios服務。方法是首先在Apache的配置文件httpd.conf中增加nagios目錄,并且設置訪問此目錄時需要身份驗證。之后生成用戶驗證文件,并創建通過頁面登錄Nagios的用戶名和密碼。之后啟動Apache服務,在監控主機端打開瀏覽器,并在地址欄輸入http://localhost/nagios,如果配置正確則可看到Nagios的登錄界面。輸入生成的用戶名和密碼即可進入監控頁面。如圖2所示。

圖2 監控主機的Nagios監控頁面
單擊頁面左方的“Monitoring”,則主監控界面顯示局域網中被監控的服務器和主機及設定的各項監控信息。如圖3所示。

圖3 Nagios顯示的監控信息
Nagios的配置過程中經常會出現各種問題,使監控功能無法正常實現。這一方面需要在配置Nagios時隨時注意檢查配置結果的正確性,另一方面要求對一些常見問題有所了解。例如,在配置nagios.cfg文件時,應該隨時使用Nagios提供的nagios-v命令測試Nagios.cfg文件是否有錯誤,如果命令運行結果顯示為“Total Warnings:0 Total Errors:0 Things look okay-No serious problems were detected during the pre-flight check”,則表示無錯;反之則應根據錯誤提示信息對配置內容進行逐項檢查。在Apache安裝并配置完成后也可以使用apachctl-t命令檢查Apache配置文件是否存在語法錯誤,若發現錯誤應及時修改,等等。
總結Nagios常見的配置問題主要有:
(1)各項配置正確,但登錄Nagios監控頁面后提示Nagios進程不能啟動。對于這種問題,可以通過監控頁面左下方的Reporting->Event Log查看日志,找到錯誤提示信息。如果提示“nagios/var目錄讀寫權限不足”,可以使用#chown-R nagios.nagios rw/和#chmod 777-R rw/命令提升該目錄的讀寫權限;如果提示“某一進程占據nagios.lock文件”,則可以使用kill命令終止占據nagios.lock的進程并重啟Nagios進程。其他錯誤也可以通過查看日志提示的類似方法加以解決。

圖4 Nagios日志記錄
(2)監控機無法讀取Windows系統的被監控機信息。首先應檢查NSClient++進程和12489端口是否都運行正常,如正常應查看被監控機NSClient++目錄的nsclient.log文件,如果發現“Unauthorized access from:”的提示信息,則將NSC.ini文件中[Settings]一項的al?lowed_hosts設置為null,即允許局域網中所有計算機都訪問。
(3)監控機安裝NRPE時遇到OpenSSL安裝錯誤。可執行#apt-get install openssl和#apt-get install libssl-dev,將openssl和libssl-dev裝好。如果這之后仍有“SSL libraries...configure”錯誤,則繼續執行#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”的錯誤信息提示,則應在httpd.conf文件中加入一句 ServerName localhost:80,然后重啟Apache即可。
此外,還有很多問題是在配置過程中隨時出現的,可能涉及到TCP/IP協議棧的正確配置、Nagios及其插件安裝包目錄設置等多方面,應根據實際情況具體加以解決,這里不再贅述。
Nagios在網絡監控方面的強大功能需要在充分滿足其配置要求的基礎上才能最大程度地發揮出來。本文介紹的Nagios配置過程以及對這一過程中常見問題分析有助于更好地構建Nagios局域網監控平臺,這些方法業已在實踐中得到了較好的應用。