手把手實現企業級開源監控軟件cacti+nagios+ntop整合(圖解)

此文凝聚筆者不少心血請尊重筆者勞動,轉載請註明出處。http://freeze.blog.51cto.com/

 

做一名運維工程師,監控恐怕是日常生活中必不可少的活了,在企業中的監控,大多是用開源軟件來實現的,(爲什麼要用開源?省錢唄..呵呵) 而且開源軟件也有着非常優秀的表現,其中著名的有cacti,nagios,ntop,Ganglia,等等..而cacti+nagios+ntop的結合應用,能爲企業做到更細微的保證。下面筆者先逐一介紹下:

 

一、cacti的簡介


網絡管理(如主機負載、網絡流量等的監控)是系統管理崗工作人員日常工作的一個重要組成部分,許多廠商爲此提供了各自的解決方案。早期開源網管軟件中比較著名的其中之一的MRTG,是一款使用perl開發的,通過SNMP協議實現管理工作站與設備代理進程間的通訊,以完成對設備的管理和運行狀態的監視。MRTG安裝配置簡單、圖形界面直觀,因爲廣受當時網絡管理人員的喜愛,也爲筆者早期的網絡管理工作立下了汗馬功勞。


但MRTG也有許多固有的缺點,如:使用文本式的數據庫,數據不能重複使用;只能按日、周、月、年來查看數據;每圖只能畫兩個DS(一條線、一個塊);每取一次數據即需要繪圖一次,浪費系統資源;同時,它也沒有提供管理功能。


有鑑於此,MRTG的作者後來另外又開發了一個工具,即rrdtool。rrdtool是一個性能優良的數據記錄器同時也是一個功能強大的繪圖引擎。它使用rrd的數據存儲格式,使用得數據可以重複使用;在繪圖方面,它可以定義任意時間段進行繪圖,能繪出多個DS。但它也有自己的缺點:雖然提供了強大的數據存儲及繪圖功能,但rrdtool卻沒有提供類似於MRTG中集成的數據採集功能;同時,它提供了過多的參數,以至於在命令行界面使用起來極爲不便;此外,rrdtool也沒有提供管理功能。於是cacti應運而生。



簡單來說,Cacti就是rrdtool的一個forefront,它內置了快速的獲數據取工具、優秀的繪圖模板以及許多設計精良的數據獲取腳本,從而可以通過結合rrdtool強大的數據抓取、數據存儲和繪圖功能,輕鬆實現主機負載、網絡流量等信息的走勢圖的繪製。目前其最新的軟件版本是0.8.7g。

 


cacti是用php語言實現的一個軟件,它的運行需要網站服務器(如apache)及PHP環境的支持。同時,cacti還需要Mysql配合PHP程序存儲一些變量數據並對變量數據進行調用,如:主機名、主機ip、snmp團體名、端口號、模板信息等變量。


rrdtool的對主機負載、網絡流量等信息的統計需要通過SNMP協議實現。經過SNMP抓取到的數據存儲於由rrdtool生成的rrd文件中,這些文件通常位於cacti的rra目錄中。rrdtool對數據的更新和存儲就是對rrd文件的處理,rrd文件是大小固定的歸檔文件(Round Robin Archive),它能夠存儲的數據筆數在創建時就已經定義。

這副圖片簡述了cacti的工作原理.

 

 Cacti的實例應用

1)網絡設置
2)主機系統

(1)網絡接口流量(進與出的帶寬)
(2)監控CPU的負載、內存等等
(3)監控磁盤的空間、進程數等等
.........................................等等

3)cacti常見的監測對象
(1)服務器資源:CPU、內存、磁盤、進程、連接數等
(2)服務器類型:WEB、Mail、FTP、數據庫、中間件
(3)網絡接口:流量、轉發速度、丟包率
(4)網絡設備性能、配置文件(對比與備份)、路由數
(5)安全設備性能、連接數、***數
(6)設備運行狀態:風扇、電源、溫度
(7)機房運行環境:電流、電壓、溫溼度

 

好了 簡單介紹完cacti後,下面我們一起來看下nagios.

二.nagios的簡介

Nagios是一款用於系統和網絡監控的應用程序。它可以在你設定的條件下對主機和服務進行監控,在狀態變差和變好的時候給出告警信息 


Nagios最初被設計爲在Linux系統之上運行,然而它同樣可以在類Unix的系統之上運行 

Nagios更進一步的特徵包括: 

 

1)監控網絡服務(SMTP、POP3、HTTP、NNTP、PING等)
2)監控主機資源(處理器負荷、磁盤利用率等)
3)簡單地插件設計使得用戶可以方便地擴展自己服務的檢測方法
4)並行服務檢查機制
5)具備定義網絡分層結構的能力,用"parent"主機定義來表達網絡主機間的關係,這種關係可被用來發現和明晰主機宕機或不可達狀態
6)當服務或主機問題產生與解決時將告警發送給聯繫人(通過EMail、短信、用戶定義方式) 可以通過飛信,等方式實現時,既可傳遞給管理員,可高效的保證服務器的維護。

7)具備定義事件句柄功能,它可以在主機或服務的事件發生時獲取更多問題定位
8)自動的日誌回滾
9)可以支持並實現對主機的冗餘監控
10)可選的WEB界面用於查看當前的網絡狀態、通知和故障歷史、日誌文件等
 
 


Nagios通常由一個主程序(Nagios)、一個插件程序(Nagios-plugins)和四個可選的ADDON(NRPE、NSCA、 NSClient++和NDOUtils)組成。Nagios的監控工作都是通過插件實現的,因此,Nagios和Nagios-plugins是服務器端工作所必須的組件。而四個ADDON中
(1)NRPE:用來在監控的遠程Linux/Unix主機上執行腳本插件以實現對這些主機資源的監控
(2)NSCA:用來讓 被監控的遠程Linux/Unix主機主動將監控信息發送給Nagios服務器(這在冗餘監控模式中特別要用到)
(3)NSClient++:用來監控 Windows主機時安裝在Windows主機上的組件
(4)NDOUtils:則用來將Nagios的配置信息和各event產生的數據存入數據庫,以實現 這些數據的快速檢索和處理
這四個ADDON(附件)中,NRPE和NSClient++工作於客戶端NDOUtils工作於服務器端,而NSCA則需要同時安裝在服務器端和客戶端

 

 

在用一幅圖片宏觀上展示nagios在企業級應用的位置

 

 

 

有朋友疑問,既然cacti,和nagios都是網絡監控工具,選用其一不是減少很多麻煩,在這裏筆者建議兩者結合使用,還要結合後文所提到的ntop,以作者的理解,簡單闡述下cacti和nagios的優缺點:

cacti:在監控方面有良好的繪圖,cacti在流量和圖型塑造上要強於nagios,但是在故障分析上有些略遜,而且報警機制也有待完善,這時nagios就派上用場了。

nagios :適合監視大量服務器上面的大批服務是否正常, 重點並不在圖形化的監控, 其集成的很多功能例如報警,都是 cacti 沒有或者很弱的。但在繪圖以及圖型塑造方面精細度比cacti要弱。

通過兩者比較,可以很清晰的瞭解各自的用途。

下面筆者在簡單介紹下ntop

三.Ntop簡介

一.    MRTG基於SNMP獲取信息,對於端口的流量,MRTG能提供精確統計,但對於三層以上的信息則無從得知了。而這正是NTOP的強項。 NTOP能夠更加直觀地將網絡使用量的情況和每個節點計算機的網絡帶寬使用詳細情況顯示出來。NTOP是一種網絡嗅探器,嗅探器在協助監測網絡數據傳輸、 排除網絡故障等方面有着不可替代的作用。可以通過分析網絡流量來確定網絡上存在的各種問題,如瓶頸效應或性能下降;也可以用來判斷是否有***正在***網絡 系統。如果懷疑網絡正在遭受***,通過嗅探器截獲的數據包可以確定正在***系統的是什麼類型的數據包,以及它們的源頭,從而可以及時地做出響應,或者對網 絡進行相應的調整,以保證網絡運行的效率和安全。

 二.   管理人員通過NTOP還可以很方便地確定出哪些通信量屬於某個特定的網絡協議、佔主要通信量的是哪個主機、 各次通信的目標是哪個主機、數據包發送時間、各主機間數據包傳遞的間隔時間等。這些信息爲網管員判斷網絡問題及優化網絡性能,提供了十分寶貴的信息。

  NTOP提供以下一些功能:

  ① 自動從網絡中識別有用的信息;

  ② 將截獲的數據包轉換成易於識別的格式;

  ③ 對網絡環境中的通信失敗進行分析;

  ④ 探測網絡環境下的通信瓶頸;

  ⑤ 記錄網絡通信時間和過程;

  ⑥ 自動識別客戶端正在使用的操作系統;

  ⑦ 可以在命令行和Web兩種方式下運行。


 

  簡單介紹完ntop後,筆者在網上找了一張圖片,很清晰的解釋了ntop的工作位置,從工作位置也可以看出ntop的主要功能.

 

 

 

通過筆者簡單介紹,也可以看出來ntop作爲監控工具與前兩者cacti和nagios的區別,ntop在監控方面,它的角度是從分析網絡流量來確定網絡上存在的各種問題,說白了就類似個抓包監控工具,只不過通過歸納繪圖實現更多的功能。

筆者這樣解釋相信不少朋友已經明白這三款開源界的元老級監控軟件的各自職責,筆者建議朋友們在總結下各自的功能,達到更深刻的理解.也算筆者給朋友們留個話題,好了,接下來開始全源碼實現這三者的整合和應用。

筆者所用的系統是rhel5.4版本,內核版本號爲2.6.18

 首先先編譯安裝cacti.

在開始之前老規矩,先安裝編譯環境,要想實現cacti的網絡監控,還要藉助其他一些如mysql,httpd,php等來其原理請參照筆者上一篇博文LEMP架構,爲了節省時間,筆者在這裏就用yum來裝這些包了。

配置好yum環境後

 yum install httpd php php-mysql mysql mysql-server php-snmp net-snmp-utils -y
 

安裝完成後讓服務都啓動並調整之間的連接關係.

service mysqld start       # 啓動mysql服務

chkconfig mysqld on      #使其開機自動啓動

 啓動完mysql後,如果出現以下畫面,並能通過mysql進入,說明成功安裝。

 

之後編輯httpd服務的配置文件,使其支持mod_status.so模塊.,

只要在/etc/httpd/conf/httpd.conf的配置文件中找到

LoadModule  status_module  modules/mod_status.so

有這一項表示已經支持狀態檢測模塊,所以無需額外添加,直接啓動web服務即可.

service httpd start                   #啓動http服務

chkconfig httpd on                 #開機自動啓動httpd 服務

啓動OK後,編輯

vim /var/www/html/index.php                 在其中添加以下內容#

<?php
phpinfo();
?>

#                  保存退出

用web瀏覽器訪問,如果出現以下畫面,則表示http支持動態php.並能與php成功連接.

 

 

接着測試與mysql的連接,先給mysql設置個管理員密碼

mysqladmin -uroot password '123456'                            #密碼設置爲123456

編輯剛纔的web頁面

vim /var/www/html/index.php   

把裏面的內容改爲

<?php$link=mysql_connect("localhost","root","123456");if(!$link) echo "FAILD!";else echo "OK!";?>

刷新剛纔的web瀏覽器頁面,如果出現OK!字樣,則表示成功連接.

 

 

 

 其中主要用到的是rrdtool-1.2.27-3.el5.i386.rpm 和rrdtool-devel-1.2.27-3.el5.i386.rpm和rrdtool-php-1.2.27-3.el5.i386.rpm這三個包,其餘的包是其他擴展功能和其他腳本語言結合的.筆者就不過多演示了.
 

安裝以上三個包

cd /root/rrdtool/                 #筆者rpm包所在的地方,可以做修改

yum -y localinstall --nogpgcheck rrdtool-1.2.27-3.el5.i386.rpm

yum -y localinstall --nogpgcheck rrdtool-devel-1.2.27-3.el5.i386.rpm

yum -y localinstall --nogpgcheck rrdtool-php-1.2.27-3.el5.i386.rpm

1.配置mysql 

接着登錄mysql,創建cacti的數據庫,併爲其指定cactier用戶和密碼(123456)。數據庫名字可根據需要指定,這裏指定爲cactidb,創建並授權:

 登錄數據庫
 

mysql -uroot -p

##會提示你輸入密碼,筆者在前面設置的密碼爲 123456

 

 

mysql> create database cactidb;

mysql> GRANT all privileges ON cactidb.* TO cactier@localhost IDENTIFIED BY '123456';

mysql> GRANT all privileges ON cactidb.* TO [email protected] IDENTIFIED BY '123456';

mysql> GRANT all privileges ON cactidb.* TO [email protected] IDENTIFIED BY '123456';

 ##說明 筆者指定了一個網段的授權,是將來做監控時數據庫和監控工具不在同一臺主機上,網段可根據自己需要進行授權。

mysql> flush privileges;                               

 

2.配置SNMP


 

(4)配置SNMP


在net-snmp的主配置文件/etc/snmp/snmpd.conf中,默認的community爲public,建議將public修改爲您需的密碼項,筆者在此就不做修改了,使用默認密碼public


接着,啓動snmp進程

service snmpd restart   #如果修改過snmpd.conf 則需要重啓服務

 


 

呵呵,是不是等不及了,終於該到cacti的編譯安裝了,準備工作已經全部做好,下面就開始對cacti的安裝配置


首先要去cacti官網下載cacti的gz源碼包,目前最新的版本是0.8.7.g

 

從官方網站的說明and a webserver that supports PHP such as Apache or IIS.就知道以上的準備工作是必須要做的.

重要說明:如果用0.8.7g版本的cacti,在後面整合nagios時可能出現bug,筆者推薦用0,8.7e版本的,筆者演示用的是0.8.7g原理一樣.

下載完成後就可以解壓縮了,筆者放在了/root/目錄下

cd /root

tar zxvf cacti-0.8.7g.tar.gz

mv cacti-0.8.7g  /var/www/html/cacti    

##因爲cacti的配置是在web頁面下進行的,所以筆者直接把cacti-0.8.7g 移至/var/www/html/cacti 

cd  /var/www/html/cacti

mysql -uroot -p cactidb < cacti.sql          

##將cacti.sql數據庫文件導入,會提示輸入密碼輸入前面設置的root 的密碼即可 

 

編輯cacti的主配置文件,爲其指定對應的數據庫參數:

vim /var/www/html/cacti/include/config.php


將下列各參數的值修改爲您前面所設定的:

$database_type = "mysql";

$database_default = "cactidb";

$database_hostname = "localhost";

$database_username = "cactier";

$database_password = "123456";

$database_port = "3306";

修改完成後保存退出。

添加cactier用戶 並給其設置密碼

 useradd cactier
 passwd cactier

cd   /var/www/html/cacti/

chown -R cactier rra/ log/     #指定rra/ log/的屬組屬主爲cactier用戶

vim /etc/crontab

##編輯crontab文件 在空白行添加以下內容

*/5 * * * * cactier php /var/www/html/cacti/poller.php  > /dev/null &

#每5分鐘以cactier去抓取數據繪圖,這個時間5分鐘應該是最小間隔了,筆者不建議修改爲更小值。

 

記的要把selinux 關閉,不然不能從web頁面訪問的,關閉方法如下

setenforce 0                              #只是臨時關閉

好了,下面就可以用web瀏覽器訪問cacti進行配置管理了。

筆者所用虛擬機ip爲192.168.0.39                            ## IP根據自己實際情況可做相應修改

從瀏覽器直接訪問以下地址 即可看到cacti配置畫面

http://192.168.0.39/cacti/install/                   

如果看到以下畫面,則可以進行之後的配置

       點擊下一步。

 

 

如果上面全是[FOUND],則可以點擊Finish 完成,中間的路徑可能與圖片不同。

Finish後就會出現登陸畫面

 

 

用戶名admin 密碼admin 即可登陸 (第一次登陸後會強行讓修改密碼)

進入後點擊graphs 會顯示流量圖

 

 

如果不出現圖片執行以下命令讓其手動繪圖即可.  

su -  cactier

php  /var/www/html/cacti/poller.php > /dev/null 2>&1

exit

數據部分啓動較慢,請耐心等待,如顯示如上圖片數據,則成功安裝配置。

##cacti的具體使用筆者不做過多介紹,有意者可去官方網站閱讀官方文檔。

 

 

下面是源碼安裝配置nagios

Nagios通常由一個主程序(Nagios)、一個插件程序(Nagios-plugins)和四個可選的ADDON(NRPE、NSCA、 NSClient++和NDOUtils)組成。Nagios的監控工作都是通過插件實現的,因此,Nagios和Nagios-plugins是服務器端工作所必須的組件

下面在服務端安裝Nagios和Nagios-plugins.

 先下載源碼包,目前官方的最新版本如下圖

 

插件版本

 

下載之.筆者放在了 /root/nagios目錄下 

nagios  需要一些基礎支持套件才能運行,如apache,gcc,glibc,gd庫等。
useradd -m nagios        #添加一個名爲nagios的用戶來運行nagios           
groupadd nagios                              #添加nagios用戶組,用以通過web頁面提交外部控制命令
usermod -a -G nagios daemon             #將運行apache用戶daemon加入nagios組

cd /root/nagios                                 #該目錄是你下載的nagios源碼包所在位置

tar zxvf nagios-3.2.2.tar.gz                            #解壓

cd nagios-3.2.2    

注意下面--with-httpd-conf 的路徑,取決與你apache的,如果是yum安裝的apache,則路徑爲:

/configure --with-command-group=nagios --with-httpd-conf=/etc/httpd/conf/extra/

##如果沒有報錯,就進行一下步驟

make all
make install
make install-init   
make install-config
make install-commandmode
             #安裝完成沒有報錯開始以下配置

vim  /usr/local/nagios/etc/objects/contacts.cfg 

##修改nagiosadmin這行其中的郵件地址爲你的email地址,以將報警郵件發到你的郵箱

make install-webconf

htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

##設置登陸web界面時HTTP驗證的賬號密碼如果apache是用源碼編譯安裝的話,該指令改爲如下所示:

#/usr/local/apache/bin/htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
下面修改httpd.conf ,筆者是yum裝的apache ,配置文件的路徑爲如下所示:

vim /etc/httpd/conf/httpd.conf

在空白地方添加一下兩行
# nagios  default settings
Include conf/extra/nagios.conf

以上過程配置結束以後需要重新啓動httpd:

# service httpd restart

 如果可以正常啓動,下面就可以開始編譯、安裝nagios-plugins

nagios的所有監控工作都是通過插件完成的,因此,在啓動nagios之前還需要爲其安裝官方提供的插件。


tar zxvf nagios-plugins-1.4.15.tar.gz

cd nagios-plugins-1.4.15

./configure --with-nagios-user=nagios --with-nagios-group=nagios

 make

 make install

 ##下面是一些配置

(1)把nagios添加爲系統服務並將之加入到自動啓動服務隊列:

chkconfig --add nagios

 chkconfig nagios on


(2)檢查其主配置文件的語法是否正確:

 /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg


(3)如果上面的語法檢查沒有問題,接下來就可以正式啓動nagios服務了:

service nagios start


(4)配置selinux

如果您的系統開啓了selinux服務,則默認爲拒絕nagios web cgi程序的運行。您可以通過下面的命令來檢查您的系統是否開啓了selinux:

getenforce


如果上面命令的結果顯示開啓了selinux服務,您可以通過下面的命令暫時性的將其關閉:

setenforce 0


如果您想在以後完全關閉selinux,可以通過編輯/etc/sysconfig/selinux文件,將其中的selinux後面的值“force”修改爲“disable”即可。


##當然,您也可以通過以下方式將nagios的CGI程序運行於SELinux/targeted模式而不用關閉selinux:

chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin

chcon -R -t httpd_sys_content_t /usr/local/nagios/share

 

(5)通過web界面查看nagios:

http://your_nagios_IP/nagios


登錄時需要指定前面設定的web認證帳號和密碼。


注意:爲了nagios系統的安全,建議您使用信息摘要強認證模式(如MD5),強制使用web的TSL/SSL安全通訊模式,並且通過訪問控制列表設定能訪問nagios的web界面的客戶端地址。

登錄後看到以下畫面則表示成功安裝。

 

 

##說明##

3.2.2版本的nagios有個bug .安裝完在/usr/local/nagios/sbin目錄下沒有原來的statusmap.cgi執行腳本

點擊左邊的current status 中的Map會顯示找不到頁面,解決方法只能從老版本中拷貝一個statusmap.cgi到/usr/local/nagios/sbin目錄下了,並賦予執行權限。

 


如果此時Nagios進程已啓動,則需要停止並重新啓動nagios:

# killall -SIGHUP nagios

# rm -f /usr/local/nagios/var/nagios.lock

# /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg

可進入nagios的web管理頁面查看log,如果出現以下字樣,則表示正常運行。

 


說明:

i)此處停止Nagios必須通過向Nagios發送SIGHUP信號的方式進行;

ii)建議此時查看nagios日誌文件中是否表明ndomod的模塊加載是否正常,以及其是否能正常連接到data sink;查看日誌,可以使用如下命令實現:# tail -30 /usr/local/nagios/var/nagios.log

 


排錯信息:

i)  如果ndomod模塊沒能正常加載的話,建議重新檢查nagios的配置文件中是否添加了所需的broker module條目;

ii) 同時,如果ndomod沒有正常連接到data sin,建議查看ndo2db.cfg文件中關於mysql連接項目的指定是否正確;

iii)確認一下在編譯NDOUtils時是否指定了關於mysql庫文件位置的選項;

 

好了 nagios已經成功安裝,下面編譯、安裝ntop

 
在官網找了副圖片,簡單的介紹了ntop的工作流程。

 

圖片右邊顯示的是目前官方最新的ntop版本 爲4.0.1下載之

1、下載安裝所需要的環境:

需要事先下載並安裝GeoIP和GetIP-devel兩個rpm包;
yum -y --nogpgcheck localinstall GeoIP-*.el5.i386.rpm

接着是ettercap相關的rpm包(ettercap,ettercap-common,需要下載,這裏沒指定具體的版本號,你可以根據自己的實際情況進行安裝):
yum -y --nogpgcheck localinstall ettercap-*.rpm


而後安裝開發環境,尤其是以下幾個rpm包:
yum install libpcap libpcap-devel gdbm gdbm-devel zlib zlib-devel


2、安裝ntop

 useradd -M -s /sbin/nologin -r ntop

 tar zxvf ntop-4.0.1.tar.gz
 cd ntop-4.0.1
 ./autogen.sh

make
make install
chown -R ntop:ntop /usr/local/share/ntop
chown -R ntop:root /usr/local/var/ntop

3、配置並啓動ntop

首先爲ntop的admin用戶設置密碼:
ntop -A

接下來啓動ntop:
ntop -i eth0 -d -L -u ntop

使之開機自動啓動:
echo 'ntop -i eth0 -d -L -u ntop &> /dev/null' >> /etc/rc.d/rc.local

用web頁面訪問http://yourIP:3000 如果出現以下換面 則表示運行正常

 

 

 

★★下面是對這三者的整合.把nagios和ntop 整合到cacti中

先讓cacti支持插件功能

 筆者在上文所安裝的cacti版本爲0.8.7g,支持插件的補丁就選用cacti-plugin-0.8.7g-PA-v2.8.tar.gz
 

下載後進行解壓縮

tar zxvf cacti-plugin-0.8.7g-PA-v2.8.tar.gz

cd cacti-plugin-arch

cp -R * /var/www/html/cacti/

mysql -uroot -p cactidb <pa.sql

patch -p1 -N  < cacti-plugin-0.8.7g-PA-v2.8.diff

打完補丁後圖片有時不會顯示,這是需要修改下/var/www/html/cacti/include目錄下的config.php文件

修改$url_path後面的值:

$url_path = "/cacti/";

修改完成直接web頁面登陸,http://yourIP/cacti

 

選擇左下的User Managenment 之後點擊admin

在其中最後一項打鉤,並保存

 

好了,現在cacti就支持其他插件功能了,下面把ntop和nagios加進去就可以了

先整合ntop.

首先去下載cacti的ntop插件,而後解壓至cacti的插件目錄:  # tar zxvf ntop-0.1.tar.gz -C /var/www/html/cacti/plugins/   接着配置cacti的主配置文件,啓用此插件:  # vim  /var/www/html/cacti/include/config.php  添加如下內容:  $plugins[] = 'ntop';   接下來到cacti的控制檯中"settings"中配置此插件,將其指向實際的ntop服務器所在的URL;然後再到cacti控制檯的"user Management"中的admin用戶中啓用此插件即可。

 設置完成後如圖所示:

發現上面是不是多了一個標籤Ntop,有些版本web瀏覽器不會顯示裏面內容,筆者建議用firefox,效果圖如下。

 下面是對nagios與cacti的整合

安裝Nagios Plugin for Cacti(NPC)插件http://trac2.assembla.com/npc
作用:將nagios的數據通過ndo2db導入到mysql數據庫,然後cacti讀取數據庫信息將nagios的結果通過NPC展示出來。
 

一、nagios需要的包

 1.下載並安裝ndoutils 


wget http://sourceforge.net/projects/nagios/files/ndoutils-1.x/ndoutils-1.4b9/ndoutils-1.4b9.tar.gz/download  tar zxvf ndoutils-1.4b9.tar.gz   cd ndoutils-1.4b9  ./configure --prefix=/var/www/html/nagios --enable-mysql --disable-pgsql --with-mysql-inc=/usr/include/mysql --with-mysql-lib=/usr/lib/mysql  make

2.準備配置文件


cp -v src/{ndomod-3x.o,ndo2db-3x,file2sock,log2ndo} /var/www/html/nagios/bin  cd db  ./installdb -ucacti -pcacti -hlocalhost -d cacti  cd ..  cp -v config/{ndo2db.cfg-sample,ndomod.cfg-sample} /var/www/html/nagios/etc  mv /var/www/html/nagios/etc/ndo2db.cfg-sample /var/www/html/nagios/etc/ndo2db.cfg  mv /var/www/html/nagios/etc/ndomod.cfg-sample /var/www/html/nagios/etc/ndomod.cfg  chmod 644 /var/www/html/nagios/etc/ndo*  chown nagios:nagios /var/www/html/nagios/etc/*  chown nagios:nagios /var/www/html/nagios/bin/*

3.修改nagios.cfg配置文件以適應當前環境

vim /var/www/html/nagios/etc/nagios.cfg     # 在文件中添加:       broker_module=/var/www/html/nagios/bin/ndomod-3x.o config_file=/var/www/html/nagios/etc/ndomod.cfg     # 檢查        event_broker_options=-1     ## 爲Nagios開啓event broker

 

4.修改ndo2db.cfg以適應當前環境


vim /var/www/html/nagios/etc/ndo2db.cfg   # 確保下列內容爲唯一項       socket_type=tcp       db_servertype=mysql       db_host=localhost       db_port=3306          db_name=cactidb          db_prefix=nagios_       db_user=cactier      db_pass=123456

5.修改ndomod.cfg以適應當前環境 


vim /var/www/html/nagios/etc/ndomod.cfg     # 確保下列項的唯一內容爲      output_type=tcpsocket      output=127.0.0.1

6.爲ndo2db添加啓動進程


cp ./daemon-init /etc/init.d/ndo2db  vim /etc/init.d/ndo2db    # 檢查裏面的路徑確保不會出現“//",並將Ndo2dbBin修改成下面的值:       Ndo2dbBin=/var/www/html/nagios/bin/ndo2db-3x  chmod +x /etc/init.d/ndo2db

7.啓動守護進程與nagios 

 

service ndo2db start 

 

tail -20 /var/log/messages    ## 查看其中是否有錯誤出現。如無報錯請繼續 

service nagios start

二:安裝ncp,以在Cacti中展現Nagios

1.先安裝cacti擴展模塊 wget http://www.cacti.net/downloads/pia/cacti-plugin-0.8.7h-PA-v3.0.tar.gz  tar xvf cacti-plugin-0.8.7h-PA-v3.0.tar.gz   cp -R cacti-plugin-arch/* /var/www/html/cacti/  cd /var/www/html/cacti/  mysql -ucactier -p123456 cactidb < pa.sql   patch -p1 -N < cacti-plugin-0.8.7h-PA-v3.0.diff

   

 ## 爲cacti配置文件打補丁的時候注意在爲include/config.php打補丁的時候有可能它將 include/config.php.dist給打補丁了,我們只需要手動加入下面的內容即可。 


vim include/config.php     # 修改(或新加入)爲      $url_path = "/cacti/";  從web進入cacti,啓用cacti plugin擴展

 

2.安裝npc


tar zxvf npc-2.0.4.tar.gz  mv npc /var/www/html/cacti/plugins/  vim /var/www/html/cacti/include/config.php      # 加入:       $plugins[] = 'npc';

3.安裝 npc支持:json


wget http://pkgs.fedoraproject.org/repo/pkgs/php-pecl-json/json-1.2.1.tgz/d8904d2f004ceec85eeacf524cd25539/json-1.2.1.tgz  tar zxvf json-1.2.1.tgz   cd json-1.2.1  phpize   ## 如果發現沒有Phpize文件,則是因爲php-devel包沒有安裝導致的   ./configure   make && make install

  

php -i | grep php.ini  ## 查看是否有導入信息 

4.打開php.ini文件添加對json的支持

 

vim /etc/php.ini 

 

   # 添加 

extension=json.so 

5.爲apache添加php支持。


vim /etc/httpd/conf/httpd.conf      # 添加一行:       AddType application/x-httpd-php .php .phtml     # 修改原DirectoryIndex內容爲:       DirectoryIndex index.html index.html.var index.php    usermod -G cactier apache  service httpd restart    ## 重啓apache以讓php生效  php -m   ## 查看是否有json被加載

6.修改配置文件以讓npc讀取到新的數據。


vim /var/www/html/nagios/etc/ndo2db.cfg       db_prefix=npc_

6.1

從Web進入Cacti,確保正確使用npc選項。

 

6.2 修改mysql中的表結構:


./mysql -ucactier -p cactidb  mysql> use cactidb; mysql> alter table npc_eventhandlers add long_output TEXT NOT NULL default '' after output;  mysql> alter table npc_hostchecks add long_output TEXT NOT NULL default '' after output;  mysql> alter table npc_hoststatus add long_output TEXT NOT NULL default '' after output;  mysql> alter table npc_notifications add long_output TEXT NOT NULL default '' after output;  mysql> alter table npc_servicechecks add long_output TEXT NOT NULL default '' after output;  mysql> alter table npc_servicestatus add long_output TEXT NOT NULL default '' after output;  mysql> alter table npc_statehistory add long_output TEXT NOT NULL default '' after output;  mysql> alter table npc_systemcommands add long_output TEXT NOT NULL default '' after output;

7.重啓ndo2db進程,重新加載配置文件重啓nagios服務。

 

service ndo2db restart 

service nagios restart 

8.在Web上配置NPC以使之正常讀取工作。

在Settings->npc中 ,勾上Remote Commands

Nagios Command File Path= /var/www/html/nagios/var/rw/nagios.cmd

Nagios URL=你的地址(http://ocalhost/nagios/)

接下來刷新npc就可以看到數據啦:

#測試:

之後用web測試 ,index.php(前文有測試方法)如果有圖片所示的這一項,則表示正常json正常安裝

 

## 如果phpize 沒有此指令,請yum安裝php-devel包

說明:如果您是使用RPM方式安裝php,那麼一些動態的擴展是自動被加入的,這些動態擴展 在:/etc/php.d/*.ini這些文件,這裏確認一下json.ini文件有這一行內容:extension=json.so;同時還要確認一下 /usr/lib/php/modules目錄下有沒有json.so文件,如果沒有的話,要手動複製一份到這個目錄,這樣才能確保json.ini起作用。

 

全部裝完在cacti中設置如圖所示

 

 

cacti+nagios

 

#排錯:

如果不出npc

可嘗試npc先將相應插件文件放到plugin,然後需要:

vi /var/www/html/cacti/include/config.php     ## 在該文件中的"$plugins = array()"後增加如下一行內容
//$plugins[] = 'npc'; 
這樣先註釋掉,纔可以安裝上npc的.否則,不能在web頁面的插件管理頁面看到npc插件.

應當將ndo2db.cfg裏面的
db_name=cactidb;
db_prefix=npc_;

#如果連接不上,注意配置文件中鏈接mysql的帳號密碼是否一致。

 

這篇也忙活好多天,筆者用的大多都是最新版本,總是碰見bug ,糾結啊,如有錯誤的地方請指出,筆者儘快修改,多謝各位朋友多多支持,

此文凝聚筆者不少心血請尊重筆者勞動,轉載請註明出處。http://freeze.blog.51cto.com/


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章