NAGIOS

NAGIOS

Nagios是一款開源的免費網路監視工具,能有效監控Windows、Linux和Unix的主機狀態,交換機路由器等網路設備,印表機等。在系統或服務狀態異常時發出郵件或簡訊報警第一時間通知網站運維人員,在狀態恢復後發出正常的郵件或簡訊通知。

基本介紹

  • 中文名:網路監視工具
  • 外文名:NAGIOS
  • 系統:Windows、Linux和Unix
  • 類型:免費
  • 軟體標籤:Nagios,網路監控
  • 軟體語言:英語
  • 軟體分類:IT治理
  • 運行環境:Linux
  • 開發商:Nagios
定義,功能介紹,系統需求,系統安裝,系統配置,版本發布,

定義

Nagios是一個監視系統運行狀態和網路信息的監視系統。Nagios能監視所指定的本地或遠程主機以及服務,同時提供異常通知功能等。
Nagios可運行在Linux/Unix平台之上,同時提供一個可選的基於瀏覽器的WEB界面以方便系統管理人員查看網路狀態,各種系統問題,以及日誌等等。

功能介紹

Nagios 可以監控的功能有:
1、監控網路服務(SMTP、POP3、HTTP、NNTP、PING等);
2、監控主機資源(處理器負荷、磁碟利用率等);
3、簡單地外掛程式設計使得用戶可以方便地擴展自己服務的檢測方法;
4、並行服務檢查機制;
5、具備定義網路分層結構的能力,用"parent"主機定義來表達網路主機間的關係,這種關係可被用來發現和明晰主機宕機或不可達狀態;
6、當服務或主機問題產生與解決時將告警傳送給聯繫人(通過EMail、簡訊、用戶定義方式);
7、可以定義一些處理程式,使之能夠在服務或者主機發生故障時起到預防作用;
8、自動的日誌滾動功能;
9、可以支持並實現對主機的冗餘監控;
10、可選的WEB界面用於查看當前的網路狀態、通知和故障歷史、日誌檔案等;
11、可以通過手機查看系統監控信息;
12、可指定自定義的事件處理控制器;

系統需求

Nagios所需要的運行條件是機器必須可以運行Linux(或是Unix變種)並且有C語言編譯器。你必須正確地配置TCP/IP協定棧以使大多數的服務檢測可以通過網路得以進行。你需要但並非必須正確地配置Nagios里的CGIs程式,而一旦你要使用CGI程式時,你必須要安裝以下這些軟體...一個WEB服務(最好是Apache)

系統安裝

1.安裝基礎支持套件和添加用戶
nagios需要一些基礎支持套件才能運行,如apache,gcc,glibc,gd庫等。
添加一個名為nagios的用戶用以專門跑nagios
設定密碼
添加nagcmd用戶組,用以通過web頁面提交外部控制命令
將nagios用戶加入nagcmd組
將apache用戶加入nagcmd組
2.安裝nagios
這時nagios基本已經安裝完成,默認安裝後的配置檔案用於啟動nagios是沒有問題的。
修改nagiosadmin這行其中的郵件地址為你的email地址,以將報警郵件發到你的信箱
安裝nagios的web接口
設定登入web界面時HTTP驗證的賬號密碼
3. 安裝nagios-plugins
nagios-plugins是nagios官方提供的一套外掛程式程式,nagios監控主機的功能其實都是通過執行外掛程式程式來實現的。
4.安裝nagios-snmp-plugins
nagios-snmp-plugins是一套用Perl編寫的通過SNMP方式監控主機的外掛程式程式
配置這些外掛程式的使用時需要配置cpan,CPAN是Comprehensive Perl Archive Network的縮寫.。它是一個巨大的Perl軟體收藏庫,收集了大量有用的Perl模組(modules)及其相關的檔案。這裡主要是使用Perl-Net-SNMP模組。有兩種方式安裝:
A)通過CPAN來安裝
B) 手工安裝
首先去官方網站下載以下幾個模組
Crypt::DES
Digest::MD5
Digest::SHA1
Digest::HMAC
Net::SNMP
下載後對於每個模組依次按照下面的方式安裝
表示模組名,具體請按上面提到的模組替換
注意:Net::SNMP模組必須在最後安裝。至此Net::SNMP手動安裝完畢
執行nagios-snmp-plugins安裝腳本,執行之後會將外掛程式命令安裝到/usr/local/nagios/libexec下
5.其他設定
至此nagios基本已經安裝完畢,但這時還不能馬上啟動nagios,需要以下設定。
將nagios添加到服務中
設定服務為自啟動
檢測nagios的配置是否正確,在後面配置nagios過程中我們為了檢測配置的是否正確需要不斷執行該命令來檢查配置檔案。
#service nagios start 啟動nagios
需要注意的是,Centos默認打開了selinux並且運行於強制安全模式,這將導致在打開nagios的web界面時會出現Internet Server Error的錯誤。
查看是否運行於強制模式,結果為1表示是
更改selinux運行於寬容模式
但是這個設定重啟後就會失效,如需要重啟後保持該設定需要修改/etc/sysconfig/selinux,將其中的SELINUX= enforcing更改為SELINUX= permissive並重啟系統。當然你也可以改成disable禁用selinux。
也可以不更改selinux的運行模式,解決辦法為:
6.實現MSN報警
要實現MSN報警需要使用phpmsnclass,這是一個用php實現的msn機器人程式。
下載phpmsnclass,此檔案為7zip壓縮格式,需要安裝7z
phpmsnclass需要php支持,安裝php,這裡為了方便就直接完成LAMP環境的安裝
安裝mysql資料庫,後面安裝cacti需要
由於安全原因請將mysql設定為只監聽在127.0.0.1上,並刪除mysql庫中默認的除了外的所有用戶,相關設定請見以前的關於postfix安裝中的設定。
安裝php相關模組
msn報警有2種方式,一種是直接使用php進行登入驗證傳送訊息,另外一個是以msn機器人的形式傳送,將訊息存儲在目錄內。這裡採用第二種。
下面把msnbot.php, config.php和msn.class.php拷貝到/var/spool/msnbot/
這個機器人的工作原理是如果要傳送訊息,就調用php生成訊息檔案到
/var/spool/msnbot/spool目錄中,傳送程式檢查到該目錄有新檔案就會模擬msn登入和發信將信息傳送出去。
在配置檔案中設定MSN的賬號和密碼(以後報警通過這個MSN發出)
加上執行許可權
在啟動函數裡執行的php檔案前要加上php (php後有空格)
啟動MSN機器人
下面發個訊息測試一下
如果成功接收到信息說明配置正確,此步驟到此結束,後面的能讓Nagios使用MSN進行報警的功能需要到Nagios里設定了。
如果需要支持離線訊息即當你在離線狀態下也能接收到機器人的信息,需要使用MSNP15協定,修改相關發信的php檔案將聲明新類的地方new MSN的第一個參數改為MSNP15

系統配置

nagios目錄結構比較清晰,安裝後下面一共有bin etc libexec sbin share var幾個目錄,其中配置檔案都存放在etc目錄下,bin下存放的是nagios的相關命令,sbin下存放的是通過web方式外部執行的cgi,libexec存放的是所有外掛程式,而var則存放的是log和pid檔案等。而實現監控都是依靠執行外掛程式來實現的。
要實現監控,需要在nagios中定義一個service,在這個service中指定監控對象和監控命令以及報警機制等。Nagios的配置關係可以按照下圖來做說明:
nagios的配置也比較清晰明了,etc目錄下默認有objects目錄和一些配置檔案,其中objects里放的是主配置檔案nagios.cfg包含進去的配置檔案。在nagios.cfg中既可以指定單獨包含一個cfg,也可以指定一個包含目錄,即該目錄下所有的cfg檔案都會包含進來。
首先我們配置下主配置檔案,為了目錄的清晰我們自己建立一些目錄來存放相關的配置檔案,比如建立commands目錄存放命令,建立services目錄存放服務,建立hosts目錄存放主機,在nagios.cfg檔案中找到cfg_file的部分,下面是一個示例,實際部署的時候可以按照你自己的情況去設定:cfg_file=/usr/local/nagios/etc/objects/commands.cfg 包含配置檔案,下同
NAGIOSNAGIOS
這裡先說明一下,監控都是依靠外掛程式去完成的,舉個例子說明,如我們要監控60.222.111.83這台伺服器的虛擬記憶體,當達到70%的時候狀態為警告,達到90%的時候為嚴重。這個依靠這個外掛程式來完成。
-
其中-H參數表示主機地址,-C參數表示SNMP團體名稱,-2表示使用SNMP v2協定,-w為warning(警告)狀態的閾值,-c表示為critical(嚴重)狀態的閾值
要用nagios實現監控某主機,就是要實現用nagios調用這樣的命令即可。
配置resource.cfg,檔案內容:
[root@localhost etc]# cat resource.cfg |grep -v '#'| sed /^$/d //查看resource.cfg配置
$USER1$=/usr/local/nagios/libexec
$USER7$=-C mypublic -2
這裡其實是定義兩個變數$USER1$和$USER7$,因為在後面定義command的時候外掛程式的路徑是絕對路徑,為了節省輸入直接可以用$USER1$代替/usr/local/nagios/libexec。而SNMP外掛程式的命令行中的參數需要設定SNMP相關的信息,為節省輸入這裡用$USER7$來代替
-C mypublic -2。大家可對照上面檢測60.222.111.83的虛擬記憶體的例子結合來加以理解。
下面我們來定義一個command用以監控,仍然以在nagios中實現監控60.222.111.83這台主機的虛擬記憶體為例說明。為了目錄結構的清晰,我們將command的定義都放到commands目錄下。在commands下建立一個cfg後綴的檔案
其中的$USER1$和$USER7$即為我們在上面的resource.cfg中定義的兩個變數,$HOSTADDRESS$為我們在下面要定義的主機
這樣我們完成對一個service的定義,定義監控對象我們這裡是定義了3個組,即屬於這3個組的所有主機都會檢測虛擬記憶體(注意:組必須在其他檔案中事先定義好)。當然你也可以用host_name針對主機作為檢測對象(多主機用逗號分隔)。監控周期和報警周期我們設定的都是24x7,這個會在後面去定義。定義報警狀態中的w表示warning,u表示unknown,c表示critial,r表示recovery(即恢復後是否傳送通知);報警選項一般生產環境下設定w,c,r即可。最後我們看到實現監控的主體部分
check_command check_snmp_storage!-m "^Virtual Memory$"!70!90
定義實現這個檢測的命令,check_snmp_storage即為我們上面在commands里定義的命令名,
!表示帶入的參數,這裡有三個!表示帶入三個參數到command里,每個參數之間用!分隔,這裡表示第一個參數為-m “^Virtual Memory$”,第二個參數為70,第三個參數為90。
這裡的$ARG1$即表示參數1,$ARG2即表示參數2,$ARG3$即表示參數3
而$HOSTADDRESS$是我們定義的檢測對象,它的值就是我們的主機IP位址;$USER1$和$USER7$為在resource.cfg里的定義。
而這個命令就是我們實現監控83的虛擬記憶體的命令!
設定3個參數是為了靈活的針對不同主機的調用,如果你對不同的主機設定的閾值不同,只需要對不同的主機定義不同的service即可,command是可以通用的!而這裡的參數1也是為了實現不同的功能而設定的,這個腳本還可以檢測物理記憶體,如果我們把參數1的值設定為”^Phisical Memory$”就可以針對物理記憶體進行檢測!定義command的時候參數的個數的設定是你可以根據需要設定的。只需要在後面service中能將參數值代到command中最終能實現你要檢測的命令即可。到此為止你可以感受到nagios的靈活性了吧。
到這裡我們基本實現了nagios的監控功能,下面我們繼續來看看其他設定。在定義host的時候我們有個主機模板的設定,這個設定的定義在object/template.cfg中定義的,這是一個系統自帶的配置檔案,關於我們所使用的Windows-Server的模板定義內容為:
上面我在該配置檔案中增加了notify-service-by-msn和notify-service-by-msn的兩種報警命令
而關於報警的周期設定在objects下的timeperiods.cfg中,如我們上面在service里定義的7x24的報警周期設定內容為
通過這裡我們可以靈活設定報警時間以和報警方式結合,如周末和休息時間設定報警為傳送簡訊和郵件,工作時間設定為傳送郵件和MSN報警方式。
定義了4種報警命令,後面兩種msn報警是我添加的;郵件報警是使用系統自帶的sendmail來傳送郵件的(注意要啟動sendmail服務),而msn報警是使用我們上面所配置的msn機器人傳送的報警信息。
至此,整個nagios的監控和報警機制了解完畢。注意我們在配置過程中的任何改動都記得要去通過/usr/local/nagios/bin/nagios –c /usr/local/nagios/etc/nagios.cfg以檢查配置檔案是否正確,如果正確則可以重啟nagios載入新配置(service nagios restart)
第三部分 安裝cacti
Cacti的運行需要AMP(Apache + MySQL + PHP), RRDTool , net-snmp , AMP環境我們在上面已經配置。
安裝rrdtool,rrdtool不能直接通過yum安裝,可以加入Dag RPM Repository以便讓yum能找到rrdtool
安裝cacti
下面開始導入資料庫,mysql資料庫的基本安全配置這裡不做說明,請參考以前的postfix郵件安裝文檔中的mysql設定部分。
mysql>create databasecacti; // 創建一個資料庫供cacti使用
mysql>usecacti;
Mysql>source /usr/local/cacti/cacti.sql // 導入mysql資料庫
Mysql>grant all privileges oncacti.* tocacti@localhostidentified by ‘cactipass’;
添加一個資料庫賬號cacti密碼為cactipass 用以訪問cacti庫
Mysql>flush privileges; //刷新許可權信息
Apache設定
#vi /etc/http/conf.d/cacti.conf //編輯cacti站點的配置檔案,檔案內容如下:
Alias /cacti "/usr/local/wwwroot/cacti"
Options FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
修改cacti的配置檔案
修改其中的資料庫連線信息,設定好資料庫主機地址,用戶,密碼信息。
至此安裝完成,訪問根據提示安裝cacti(ip換成你對應的主機ip地址)
接下來安裝cacti的外掛程式管理
複製相關檔案到cacti下
第四部分 整合cacti和nagios
整合cacti和nagios是利用了cacti的一個外掛程式nagios for cacti,它的原理是將nagios的數據通過ndo2db導入到mysql資料庫(cacti的庫中),然後cacti讀取資料庫信息將nagios的結果展示出來。
1.安裝ndoutils
首先需要安裝ndoutils以將nagios的數據能導入到mysql資料庫中。
修改nagios主配置檔案
添加以下內容
check_external_commands=1
command_check_interval=-1
event_broker_options=-1
broker_module=/usr/local/nagios/bin/ndomod.o config_file=/usr/local/nagios/etc/ndomod.cfg
process_performance_data=1
添加的內容至此結束
2.安裝php-json
npc展示部分用到json,需要在php中安裝php-json的支持,centos 5下的php 版本默認是5.1.6 不帶json支持,無法簡單地通過yum install php5-json方式來安裝。
#cd ~/downloads
編譯前初始化php環境
重啟apache
為了驗證是否成功可使用phpinfo查看是否已支持json
3.安裝npc
啟用cacti的外掛程式功能,以admin用戶登入cacti,在console中的user management里對admin的用戶許可權進行編輯,勾選上Plugin Management,然後到外掛程式管理中心安裝並啟用NPC即可。
至此完成nagios和cacti的整合。。

版本發布

2009年08月13日,企業監控系統 Nagios 3.2.0 發布。
2010年10月05日,Nagios 3.2.3 發布,企業級監控系統。
2012年05月08日,Nagios 3.4.0 發布,企業級監控系統。
2012年05月14日,Nagios 3.4.1 發布。
2012年12月01日,Nagios 3.4.3 發布,企業級監控系統.
2013年01月18日,Nagios 3.4.4 發布,企業級監控系統。
2013年03月18日,Nagios 3.5.0 發布,企業級監控系統。
2013年09月20日,Nagios4.0.0 發布。
2013年10月15日,Nagios4.0.1發布。
2013年11月25日,Nagios4.0.2發布。
2014年02月18日,Nagios4.0.3發布。
2014年03月14日,Nagios4.0.4發布。
2014年04月11日,Nagios4.0.5發布。
2014年04月29日,Nagios4.0.6發布。
2014年06月03日, Nagios4.0.7發布,從本版本開始國內出現了持續中文漢化版
2014年08月12日,Nagios4.08發布。
2015年08月18日,Nagios4.1.0發布,這個版本最好不要用,參考如下面的版本。
2015年08月19日,緊急發布Nagios4.1.1版本,修改4.1.0嚴重出現的問題CGi讀取配置問題、指令!使
Nagios不工作問題

相關詞條

熱門詞條

聯絡我們