此文凝聚筆者不少心血請尊重筆者勞動,轉載請注明出處。
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
cactier@127.0.0.1 IDENTIFIED BY '123456';
mysql> GRANT all privileges ON cactidb.* TO
cactier@192.168.0.0 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中設置如圖所示
#排錯:
如果不出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/