複製鏈接
請複製以下鏈接發送給好友

NAGIOS

鎖定
Nagios是一款開源的免費網絡監視工具,能有效監控Windows、Linux和Unix的主機狀態,交換機路由器等網絡設備,打印機等。在系統或服務狀態異常時發出郵件或短信報警第一時間通知網站運維人員,在狀態恢復後發出正常的郵件或短信通知。
中文名
網絡監視工具
外文名
NAGIOS
系    統
Windows、Linux和Unix
類    型
免費
軟件標籤
Nagios,網絡監控
軟件語言
英語
軟件分類
IT治理
運行環境
Linux
開發商
Nagios

NAGIOS定義

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

NAGIOS功能介紹

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

NAGIOS系統需求

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

NAGIOS系統安裝

1.安裝基礎支持套件和添加用户
nagios需要一些基礎支持套件才能運行,如apache,gccglibc,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系統配置

nagios目錄結構比較清晰,安裝後下面一共有bin etc libexec sbin share var幾個目錄,其中配置文件都存放在etc目錄下,bin下存放的是nagios的相關命令,sbin下存放的是通過web方式外部執行的cgi,libexec存放的是所有插件,而var則存放的是log和pid文件等。而實現監控都是依靠執行插件來實現的。
要實現監控,需要在nagios中定義一個service,在這個service中指定監控對象和監控命令以及報警機制等。Nagios的配置關係可以按照圖1所示來做説明:
nagios的配置也比較清晰明瞭,etc目錄下默認有objects目錄和一些配置文件,其中objects裏放的是主配置文件nagios.cfg包含進去的配置文件。在nagios.cfg中既可以指定單獨包含一個cfg,也可以指定一個包含目錄,即該目錄下所有的cfg文件都會包含進來。
圖1 圖1
首先我們配置下主配置文件,為了目錄的清晰我們自己建立一些目錄來存放相關的配置文件,比如建立commands目錄存放命令,建立services目錄存放服務,建立hosts目錄存放主機,在nagios.cfg文件中找到cfg_file的部分,下面是一個示例,實際部署的時候可以按照你自己的情況去設置:cfg_file=/usr/local/nagios/etc/objects/commands.cfg 包含配置文件,下同
這裏先説明一下,監控都是依靠插件去完成的,舉個例子説明,如我們要監控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的整合。。

NAGIOS版本發佈

2009年08月13日,企業監控系統 Nagios 3.2.0 發佈。 [3] 
2010年10月05日,Nagios 3.2.3 發佈,企業級監控系統。 [4] 
2012年05月08日,Nagios 3.4.0 發佈,企業級監控系統。 [5] 
2012年05月14日,Nagios 3.4.1 發佈。 [6] 
2012年12月01日,Nagios 3.4.3 發佈,企業級監控系統.
2013年01月18日,Nagios 3.4.4 發佈,企業級監控系統。 [7] 
2013年03月18日,Nagios 3.5.0 發佈,企業級監控系統。 [8] 
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發佈,從本版本開始國內出現了持續中文漢化版 [9] 
2014年08月12日,Nagios4.08發佈。 [10] 
2015年08月18日,Nagios4.1.0發佈,這個版本最好不要用,參考如下面的版本。 [11] 
2015年08月19日,緊急發佈Nagios4.1.1版本,修改4.1.0嚴重出現的問題CGi讀取配置問題、指令!使
Nagios不工作問題
參考資料
展開全部 收起