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