做一名運維工程師,監(jiān)控恐怕是日常生活中必不可少的活了,,在企業(yè)中的監(jiān)控,,大多是用開源軟件來實現(xiàn)的,(為什么要用開源,?省錢唄..呵
呵)
而且開源軟件也有著非常優(yōu)秀的表現(xiàn),,其中著名的有cacti,nagios,ntop,Ganglia,等等..而cacti+nagios+ntop的
結合應用,,能為企業(yè)做到更細微的保證,。下面筆者先逐一介紹下:
一、cacti的簡介
網(wǎng)絡管理(如主機負載,、網(wǎng)絡流量等的監(jiān)控)是系統(tǒng)管理崗工作人員日常工作的一個重要組成部分,,許多廠商為此提供了各自的解決方案。早期開源網(wǎng)管
軟件中比較著名的其中之一的MRTG,,是一款使用perl開發(fā)的,,通過SNMP協(xié)議實現(xiàn)管理工作站與設備代理進程間的通訊,以完成對設備的管理和運行狀態(tài)
的監(jiān)視,。MRTG安裝配置簡單,、圖形界面直觀,因為廣受當時網(wǎng)絡管理人員的喜愛,,也為筆者早期的網(wǎng)絡管理工作立下了汗馬功勞,。
但MRTG也有許多固有的缺點,如:使用文本式的數(shù)據(jù)庫,,數(shù)據(jù)不能重復使用,;只能按日、周,、月,、年來查看數(shù)據(jù),;每圖只能畫兩個DS(一條線、一個塊),;每取一次數(shù)據(jù)即需要繪圖一次,,浪費系統(tǒng)資源;同時,,它也沒有提供管理功能,。
有鑒于此,MRTG的作者后來另外又開發(fā)了一個工具,,即rrdtool,。rrdtool是一個性能優(yōu)良的數(shù)據(jù)記錄器,同時也是一個功能強大的繪圖引擎,。
它使用rrd的數(shù)據(jù)存儲格式,,使用得數(shù)據(jù)可以重復使用;在繪圖方面,,它可以定義任意時間段進行繪圖,,能繪出多個DS,。但它也有自己的缺點:雖然提供了強大
的數(shù)據(jù)存儲及繪圖功能,,但rrdtool卻沒有提供類似于MRTG中集成的數(shù)據(jù)采集功能,;同時,它提供了過多的參數(shù),,以至于在命令行界面使用起來極為不
便,;此外,rrdtool也沒有提供管理功能,。于是cacti應運而生,。
簡單來說,Cacti就是rrdtool的一個forefront,,它內(nèi)置了快速的獲數(shù)據(jù)取工具,、優(yōu)秀的繪圖模板以及許多設計精良的數(shù)據(jù)獲取腳
本,從而可以通過結合rrdtool強大的數(shù)據(jù)抓取,、數(shù)據(jù)存儲和繪圖功能,,輕松實現(xiàn)主機負載、網(wǎng)絡流量等信息的走勢圖的繪制,。目前其最新的軟件版本是
0.8.7g,。
cacti是用php語言實現(xiàn)的一個軟件,它的運行需要網(wǎng)站服務器(如apache)及PHP環(huán)境的支持,。同時,,cacti還需要Mysql配合PHP程序存儲一些變量數(shù)據(jù)并對變量數(shù)據(jù)進行調(diào)用,如:主機名、主機ip,、snmp團體名,、端口號、模板信息等變量,。
rrdtool的對主機負載,、網(wǎng)絡流量等信息的統(tǒng)計需要通過SNMP協(xié)議實現(xiàn)。經(jīng)過SNMP抓取到的數(shù)據(jù)存儲于由rrdtool生成的rrd文
件中,,這些文件通常位于cacti的rra目錄中,。rrdtool對數(shù)據(jù)的更新和存儲就是對rrd文件的處理,rrd文件是大小固定的歸檔文件
(Round Robin Archive),,它能夠存儲的數(shù)據(jù)筆數(shù)在創(chuàng)建時就已經(jīng)定義,。
這副圖片簡述了cacti的工作原理.
Cacti的實例應用
1)網(wǎng)絡設置
2)主機系統(tǒng)
(1)網(wǎng)絡接口流量(進與出的帶寬)
(2)監(jiān)控CPU的負載、內(nèi)存等等
(3)監(jiān)控磁盤的空間,、進程數(shù)等等
.........................................等等
3)cacti常見的監(jiān)測對象
(1)服務器資源:CPU,、內(nèi)存、磁盤,、進程、連接數(shù)等
(2)服務器類型:WEB,、Mail,、FTP、數(shù)據(jù)庫,、中間件
(3)網(wǎng)絡接口:流量,、轉(zhuǎn)發(fā)速度、丟包率
(4)網(wǎng)絡設備性能,、配置文件(對比與備份),、路由數(shù)
(5)安全設備性能、連接數(shù),、攻擊數(shù)
(6)設備運行狀態(tài):風扇,、電源、溫度
(7)機房運行環(huán)境:電流,、電壓,、溫濕度
|
好了 簡單介紹完cacti后,下面我們一起來看下nagios.
二.nagios的簡介
Nagios是一款用于系統(tǒng)和網(wǎng)絡監(jiān)控的應用程序,。它可以在你設定的條件下對主機和服務進行監(jiān)控,,在狀態(tài)變差和變好的時候給出告警信息
Nagios最初被設計為在Linux系統(tǒng)之上運行,然而它同樣可以在類Unix的系統(tǒng)之上運行
Nagios更進一步的特征包括:
1)監(jiān)控網(wǎng)絡服務(SMTP,、POP3,、HTTP、NNTP、PING等)
2)監(jiān)控主機資源(處理器負荷,、磁盤利用率等)
3)簡單地插件設計使得用戶可以方便地擴展自己服務的檢測方法
4)并行服務檢查機制
5)具備定義網(wǎng)絡分層結構的能力,,用"parent"主機定義來表達網(wǎng)絡主機間的關系,這種關系可被用來發(fā)現(xiàn)和明晰主機宕機或不可達狀態(tài)
6)當服務或主機問題產(chǎn)生與解決時將告警發(fā)送給聯(lián)系人(通過EMail,、短信,、用戶定義方式)
可以通過飛信,等方式實現(xiàn)時,,既可傳遞給管理員,,可高效的保證服務器的維護。
7)具備定義事件句柄功能,,它可以在主機或服務的事件發(fā)生時獲取更多問題定位
8)自動的日志回滾
9)可以支持并實現(xiàn)對主機的冗余監(jiān)控
10)可選的WEB界面用于查看當前的網(wǎng)絡狀態(tài),、通知和故障歷史、日志文件等
|
Nagios通常由一個主程序(Nagios),、一個插件程序(Nagios-plugins)和四個可選的ADDON(NRPE,、NSCA、 NSClient++和NDOUtils)組成,。Nagios的監(jiān)控工作都是通過插件實現(xiàn)的,,因此,Nagios和Nagios-plugins是服務器端工作所必須的組件,。而四個ADDON中
(1)NRPE:用來在監(jiān)控的遠程Linux/Unix主機上執(zhí)行腳本插件以實現(xiàn)對這些主機資源的監(jiān)控
(2)NSCA:用來讓 被監(jiān)控的遠程Linux/Unix主機主動將監(jiān)控信息發(fā)送給Nagios服務器(這在冗余監(jiān)控模式中特別要用到)
(3)NSClient++:用來監(jiān)控 Windows主機時安裝在Windows主機上的組件
(4)NDOUtils:則用來將Nagios的配置信息和各event產(chǎn)生的數(shù)據(jù)存入數(shù)據(jù)庫,,以實現(xiàn) 這些數(shù)據(jù)的快速檢索和處理
這四個ADDON(附件)中,NRPE和NSClient++工作于客戶端,,NDOUtils工作于服務器端,,而NSCA則需要同時安裝在服務器端和客戶端
在用一幅圖片宏觀上展示nagios在企業(yè)級應用的位置
有朋友疑問,既然cacti,和nagios都是網(wǎng)絡監(jiān)控工具,,選用其一不是減少很多麻煩,,在這里筆者建議兩者結合使用,還要結合后文所提到的ntop,,以作者的理解,,簡單闡述下cacti和nagios的優(yōu)缺點:
cacti:在監(jiān)控方面有良好的繪圖,cacti在流量和圖型塑造上要強于nagios,,但是在故障分析上有些略遜,,而且報警機制也有待完善,這時nagios就派上用場了,。
nagios :適合監(jiān)視大量服務器上面的大批服務是否正常, 重點并不在圖形化的監(jiān)控, 其集成的很多功能例如報警,都是 cacti 沒有或者很弱的,。但在繪圖以及圖型塑造方面精細度比cacti要弱。
通過兩者比較,,可以很清晰的了解各自的用途,。
下面筆者在簡單介紹下ntop
三.Ntop簡介
一.
MRTG基于SNMP獲取信息,,對于端口的流量,MRTG能提供精確統(tǒng)計,,但對于三層以上的信息則無從得知了,。而這正是NTOP的強項。
NTOP能夠更加直觀地將網(wǎng)絡使用量的情況和每個節(jié)點計算機的網(wǎng)絡帶寬使用詳細情況顯示出來,。NTOP是一種網(wǎng)絡嗅探器,,嗅探器在協(xié)助監(jiān)測網(wǎng)絡數(shù)據(jù)傳輸、
排除網(wǎng)絡故障等方面有著不可替代的作用,??梢酝ㄟ^分析網(wǎng)絡流量來確定網(wǎng)絡上存在的各種問題,如瓶頸效應或性能下降,;也可以用來判斷是否有黑客正在攻擊網(wǎng)絡
系統(tǒng),。如果懷疑網(wǎng)絡正在遭受攻擊,通過嗅探器截獲的數(shù)據(jù)包可以確定正在攻擊系統(tǒng)的是什么類型的數(shù)據(jù)包,,以及它們的源頭,,從而可以及時地做出響應,或者對網(wǎng)
絡進行相應的調(diào)整,,以保證網(wǎng)絡運行的效率和安全,。
二. 管理人員通過NTOP還可以很方便地確定出哪些通信量屬于某個特定的網(wǎng)絡協(xié)議、占主要通信量的是哪個主機,、 各次通信的目標是哪個主機,、數(shù)據(jù)包發(fā)送時間、各主機間數(shù)據(jù)包傳遞的間隔時間等,。這些信息為網(wǎng)管員判斷網(wǎng)絡問題及優(yōu)化網(wǎng)絡性能,提供了十分寶貴的信息,。
NTOP提供以下一些功能:
?、?自動從網(wǎng)絡中識別有用的信息;
?、?將截獲的數(shù)據(jù)包轉(zhuǎn)換成易于識別的格式,;
③ 對網(wǎng)絡環(huán)境中的通信失敗進行分析,;
?、?探測網(wǎng)絡環(huán)境下的通信瓶頸;
?、?記錄網(wǎng)絡通信時間和過程,;
⑥ 自動識別客戶端正在使用的操作系統(tǒng),;
?、?可以在命令行和Web兩種方式下運行,。
|
簡單介紹完ntop后,筆者在網(wǎng)上找了一張圖片,,很清晰的解釋了ntop的工作位置,,從工作位置也可以看出ntop的主要功能.
通過筆者簡單介紹,也可以看出來ntop作為監(jiān)控工具與前兩者cacti和nagios的區(qū)別,,ntop在監(jiān)控方面,,它的角度是從分析網(wǎng)絡流量來確定網(wǎng)絡上存在的各種問題,說白了就類似個抓包監(jiān)控工具,,只不過通過歸納繪圖實現(xiàn)更多的功能,。
筆者這樣解釋相信不少朋友已經(jīng)明白這三款開源界的元老級監(jiān)控軟件的各自職責,筆者建議朋友們在總結下各自的功能,,達到更深刻的理解.也算筆者給朋友們留個話題,,好了,接下來開始全源碼實現(xiàn)這三者的整合和應用,。
筆者所用的系統(tǒng)是rhel5.4版本,,內(nèi)核版本號為2.6.18
首先先編譯安裝cacti.
在開始之前老規(guī)矩,先安裝編譯環(huán)境,,要想實現(xiàn)cacti的網(wǎng)絡監(jiān)控,,還要借助其他一些如mysql,httpd,php等來其原理請參照筆者上一篇博文LEMP架構,為了節(jié)省時間,,筆者在這里就用yum來裝這些包了,。
配置好yum環(huán)境后
yum install httpd php php-mysql mysql mysql-server php-snmp net-snmp-utils -y
安裝完成后讓服務都啟動并調(diào)整之間的連接關系.
service mysqld start # 啟動mysql服務
chkconfig mysqld on #使其開機自動啟動
啟動完mysql后,如果出現(xiàn)以下畫面,,并能通過mysql進入,,說明成功安裝。
之后編輯httpd服務的配置文件,,使其支持mod_status.so模塊.,
只要在/etc/httpd/conf/httpd.conf的配置文件中找到
LoadModule status_module modules/mod_status.so
有這一項表示已經(jīng)支持狀態(tài)檢測模塊,,所以無需額外添加,直接啟動web服務即可.
service httpd start #啟動http服務
chkconfig httpd on #開機自動啟動httpd 服務
啟動OK后,,編輯
vim /var/www/html/index.php 在其中添加以下內(nèi)容#
<?php
phpinfo();
?>
# 保存退出
用web瀏覽器訪問,,如果出現(xiàn)以下畫面,則表示http支持動態(tài)php.并能與php成功連接.
接著測試與mysql的連接,,先給mysql設置個管理員密碼
mysqladmin -uroot password '123456' #密碼設置為123456
編輯剛才的web頁面
vim /var/www/html/index.php
把里面的內(nèi)容改為
<?php
$link=mysql_connect("localhost","root","123456");
if(!$link) echo "FAILD!";
else echo "OK!";
?>
刷新剛才的web瀏覽器頁面,,如果出現(xiàn)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,,創(chuàng)建cacti的數(shù)據(jù)庫,,并為其指定cactier用戶和密碼(123456),。數(shù)據(jù)庫名字可根據(jù)需要指定,這里指定為cactidb,,創(chuàng)建并授權:
登錄數(shù)據(jù)庫
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';
##說明 筆者指定了一個網(wǎng)段的授權,是將來做監(jiān)控時數(shù)據(jù)庫和監(jiān)控工具不在同一臺主機上,,網(wǎng)段可根據(jù)自己需要進行授權,。
mysql> flush privileges;
|
2.配置SNMP
(4)配置SNMP
在net-snmp的主配置文件/etc/snmp/snmpd.conf中,默認的community為public,,建議將public修改為您需的密碼項,,筆者在此就不做修改了,使用默認密碼public
接著,,啟動snmp進程
service snmpd restart #如果修改過snmpd.conf 則需要重啟服務
|
呵呵,,是不是等不及了,終于該到cacti的編譯安裝了,準備工作已經(jīng)全部做好,,下面就開始對cacti的安裝配置
首先要去cacti官網(wǎng)下載cacti的gz源碼包,,目前最新的版本是0.8.7.g
從官方網(wǎng)站的說明and a webserver that supports PHP such as Apache or IIS.就知道以上的準備工作是必須要做的.
重要說明:如果用0.8.7g版本的cacti,在后面整合nagios時可能出現(xiàn)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數(shù)據(jù)庫文件導入,,會提示輸入密碼輸入前面設置的root 的密碼即可
編輯cacti的主配置文件,,為其指定對應的數(shù)據(jù)庫參數(shù):
vim /var/www/html/cacti/include/config.php
將下列各參數(shù)的值修改為您前面所設定的:
$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文件 在空白行添加以下內(nèi)容
*/5 * * * * cactier php /var/www/html/cacti/poller.php > /dev/null &
#每5分鐘以cactier去抓取數(shù)據(jù)繪圖,,這個時間5分鐘應該是最小間隔了,,筆者不建議修改為更小值。
記的要把selinux 關閉,,不然不能從web頁面訪問的,,關閉方法如下
setenforce 0 #只是臨時關閉
好了,下面就可以用web瀏覽器訪問cacti進行配置管理了,。
筆者所用虛擬機ip為192.168.0.39 ## IP根據(jù)自己實際情況可做相應修改
從瀏覽器直接訪問以下地址 即可看到cacti配置畫面
如果看到以下畫面,則可以進行之后的配置
點擊下一步,。
如果上面全是[FOUND],則可以點擊Finish 完成,,中間的路徑可能與圖片不同。
Finish后就會出現(xiàn)登陸畫面
用戶名admin 密碼admin 即可登陸 (第一次登陸后會強行讓修改密碼)
進入后點擊graphs 會顯示流量圖
如果不出現(xiàn)圖片執(zhí)行以下命令讓其手動繪圖即可.
su - cactier
php /var/www/html/cacti/poller.php > /dev/null 2>&1
exit
數(shù)據(jù)部分啟動較慢,,請耐心等待,,如顯示如上圖片數(shù)據(jù),則成功安裝配置,。
##cacti的具體使用筆者不做過多介紹,,有意者可去官方網(wǎng)站閱讀官方文檔,。
|
Nagios通常由一個主程序(Nagios)、一個插件程序(Nagios-plugins)和四個可選的ADDON(NRPE,、NSCA,、 NSClient++和NDOUtils)組成。Nagios的監(jiān)控工作都是通過插件實現(xiàn)的,,因此,,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地址,,以將報警郵件發(fā)到你的郵箱
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的所有監(jiān)控工作都是通過插件完成的,,因此,,在啟動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添加為系統(tǒng)服務并將之加入到自動啟動服務隊列:
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
如果您的系統(tǒng)開啟了selinux服務,,則默認為拒絕nagios web cgi程序的運行。您可以通過下面的命令來檢查您的系統(tǒng)是否開啟了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系統(tǒng)的安全,,建議您使用信息摘要強認證模式(如MD5),,強制使用web的TSL/SSL安全通訊模式,并且通過訪問控制列表設定能訪問nagios的web界面的客戶端地址,。
登錄后看到以下畫面則表示成功安裝,。
##說明##
3.2.2版本的nagios有個bug .安裝完在/usr/local/nagios/sbin目錄下沒有原來的statusmap.cgi執(zhí)行腳本
點擊左邊的current status 中的Map會顯示找不到頁面,,解決方法只能從老版本中拷貝一個statusmap.cgi到/usr/local/nagios/sbin目錄下了,并賦予執(zhí)行權限,。
如果此時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,如果出現(xiàn)以下字樣,,則表示正常運行,。
說明:
i)此處停止Nagios必須通過向Nagios發(fā)送SIGHUP信號的方式進行;
ii)建議此時查看nagios日志文件中是否表明ndomod的模塊加載是否正常,,以及其是否能正常連接到data sink,;查看日志,可以使用如下命令實現(xiàn):# tail -30 /usr/local/nagios/var/nagios.log
排錯信息:
i) 如果ndomod模塊沒能正常加載的話,,建議重新檢查nagios的配置文件中是否添加了所需的broker module條目,;
ii) 同時,如果ndomod沒有正常連接到data sin,,建議查看ndo2db.cfg文件中關于mysql連接項目的指定是否正確,;
iii)確認一下在編譯NDOUtils時是否指定了關于mysql庫文件位置的選項;
|
好了 nagios已經(jīng)成功安裝,,下面編譯,、安裝ntop
在官網(wǎng)找了副圖片,簡單的介紹了ntop的工作流程,。
圖片右邊顯示的是目前官方最新的ntop版本 為4.0.1下載之
1,、下載安裝所需要的環(huán)境:
需要事先下載并安裝GeoIP和GetIP-devel兩個rpm包;
yum -y --nogpgcheck localinstall GeoIP-*.el5.i386.rpm
接著是ettercap相關的rpm包(ettercap,ettercap-common,,需要下載,,這里沒指定具體的版本號,你可以根據(jù)自己的實際情況進行安裝):
yum -y --nogpgcheck localinstall ettercap-*.rpm
而后安裝開發(fā)環(huán)境,,尤其是以下幾個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
|
★★下面是對這三者的整合.把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/";
選擇左下的User Managenment 之后點擊admin
在其中最后一項打鉤,,并保存
好了,,現(xiàn)在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
- 添加如下內(nèi)容:
- $plugins[] = 'ntop';
-
- 接下來到cacti的控制臺中"settings"中配置此插件,,將其指向?qū)嶋H的ntop服務器所在的URL,;然后再到cacti控制臺的"user Management"中的admin用戶中啟用此插件即可,。
設置完成后如圖所示:
發(fā)現(xiàn)上面是不是多了一個標簽Ntop,有些版本web瀏覽器不會顯示里面內(nèi)容,筆者建議用firefox,,效果圖如下,。
下面是對nagios與cacti的整合
安裝Nagios Plugin for Cacti(NPC)插件(http://trac2./npc)
作用:將nagios的數(shù)據(jù)通過ndo2db導入到mysql數(shù)據(jù)庫,然后cacti讀取數(shù)據(jù)庫信息將nagios的結果通過NPC展示出來,。
一,、nagios需要的包
1.下載并安裝ndoutils
- wget http:///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配置文件以適應當前環(huán)境
- 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以適應當前環(huán)境
- vim /var/www/html/nagios/etc/ndo2db.cfg
- # 確保下列內(nèi)容為唯一項
- 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以適應當前環(huán)境
- vim /var/www/html/nagios/etc/ndomod.cfg
- # 確保下列項的唯一內(nèi)容為
- output_type=tcpsocket
- output=127.0.0.1
6.為ndo2db添加啟動進程
- cp ./daemon-init /etc/init.d/ndo2db
- vim /etc/init.d/ndo2db
- # 檢查里面的路徑確保不會出現(xiàn)“//",并將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 ## 查看其中是否有錯誤出現(xiàn),。如無報錯請繼續(xù)
service nagios start
二:安裝ncp,,以在Cacti中展現(xiàn)Nagios
- 1.先安裝cacti擴展模塊
- wget http://www./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給打補丁了,我們只需要手動加入下面的內(nèi)容即可,。
- 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./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 ## 如果發(fā)現(xiàn)沒有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內(nèi)容為:
- DirectoryIndex index.html index.html.var index.php
-
- usermod -G cactier apache
- service httpd restart ## 重啟apache以讓php生效
- php -m ## 查看是否有json被加載
6.修改配置文件以讓npc讀取到新的數(shù)據(jù),。
- 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就可以看到數(shù)據(jù)啦:
#測試:
之后用web測試 ,index.php(前文有測試方法)如果有圖片所示的這一項,,則表示正常json正常安裝
## 如果phpize 沒有此指令,,請yum安裝php-devel包
說
明:如果您是使用RPM方式安裝php,那么一些動態(tài)的擴展是自動被加入的,,這些動態(tài)擴展
在:/etc/php.d/*.ini這些文件,,這里確認一下json.ini文件有這一行內(nèi)容: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()"后增加如下一行內(nèi)容
//$plugins[] = 'npc';
這樣先注釋掉,才可以安裝上npc的.否則,不能在web頁面的插件管理頁面看到npc插件.
應當將ndo2db.cfg里面的
db_name=cactidb;
db_prefix=npc_;
#如果連接不上,,注意配置文件中鏈接mysql的賬號密碼是否一致。
|
這篇也忙活好多天,,筆者用的大多都是最新版本,,總是碰見bug ,糾結啊,如有錯誤的地方請指出,筆者盡快修改,,多謝各位朋友多多支持,,
|