1 簡要介紹
Nagios監(jiān)控服務(wù)器的狀態(tài)很強大,并且報警功能也很不錯,但對像流量這樣的持續(xù)數(shù)據(jù)的展現(xiàn)能力卻比較弱,雖然有類似PNP這樣的插件可以對數(shù)據(jù)進(jìn)行存儲展現(xiàn),但在看習(xí)慣Cacti的圖后,PNP這樣粗燥的圖就很難接受了,因此以下大體描述了一下如何整合Nagios和Cacti,將點狀態(tài)和線狀態(tài)都清晰的展現(xiàn)。
cacti本身的thold的插件也可以提供報警功能,并且也可以支持msn,fetion,email,并且能夠自己創(chuàng)建模版,例如可以定義流量比如在10M-100M之間是正常,超過這個區(qū)間就進(jìn)行報警等等,這個是非常不錯的。那么為什么要引進(jìn)nagios呢,可以這么講cacti所獲取的信息都是通過snmp協(xié)議進(jìn)行的,我們通過snmp可以獲取什么呢,磁盤信息,流量信息,負(fù)載信息等等,那么我們需要探測一個http服務(wù)是否正常怎么辦,Nagios就是最好的解決辦法,并且nagios的檢測插件非常豐富,可以直接拿來簡單配置一下command就可以用了。因此在監(jiān)控報警方面,cacti和nagios結(jié)合起來是比較好的選擇。下來我就簡單介紹一下如何架設(shè)這兩個服務(wù),并對他們進(jìn)行結(jié)合。說結(jié)合其實只是表面的,cacti和nagios還是以他們原來的方式進(jìn)行工作,ndo負(fù)責(zé)將nagios收集的數(shù)據(jù)存在數(shù)據(jù)庫中,cacti的npc插件會從數(shù)據(jù)庫中取數(shù)據(jù)在cacti的npc標(biāo)簽中來展現(xiàn)。是否需要結(jié)合其實按照自己的需求來吧,對于不同的系統(tǒng)管理員可能關(guān)心的東西不一樣。
以下試驗在Centos5.2系統(tǒng)下進(jìn)行,并且需要yum支持(這個東西真是好?。?div style="height:15px;">
需要安裝的軟件:
1 nagios-3.0.6
ndoutils-1.4b <Nagios數(shù)據(jù)庫支持>
2 cacti-0.8.7b
cacti-plugin-arch <cacti 插件管理>
settings-0.5 <cacti插件>
npc(nagios plugin for cacti) <cacti插件>
thold(暫時放在這里以后再詳細(xì)描述) <cacti插件>
monitor(暫時放在這里) <cacti插件>
3 支持軟件
httpd mysql mysql-devel(ndoutils需要它的支持) php5.2(由于Npc需要Json的支持,php5.1不支持json),rrdtool,net-snmp,libtool
2 支持軟件的安裝:
yum install httpd mysql-server rrdtool net-snmp
由于yum源提供的php目前版本為5.1.6不能夠支持json,因此需要一個php的擴(kuò)展源。
在/etc/yum.repos.d生成utterramblings.repo,內(nèi)容如下
[utterramblings]
name=Jason's Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka
yum install php php-mysql php-gd php-pdo php-json php-snmp
3 Cacti安裝
yum install cacti
安裝完成后,需要簡單配置一下
1 修改......httpd/conf.d/cacti.conf 修改一下訪問權(quán)限(默認(rèn)只能本機(jī)訪問)
2 導(dǎo)入mysql的數(shù)據(jù)
建立一個名為cacti數(shù)據(jù)庫
mysql>create database cacti;
mysql>grant all . cacti.* to cacti@localhost identified by 'XXXXXX';
mysql>flush privileges;
導(dǎo)入數(shù)據(jù): mysql -ucacti -pXXXXXX cacti<cacti.sql
3 進(jìn)行一下cacti數(shù)據(jù)庫相關(guān)配置
cacti/include/config.php
cacti/include/global.php
配置一下數(shù)據(jù)庫的名稱,用戶及密碼
4 啟動apache,通過
[url]http://youserver/cacti/[/url] 就可以訪問
第一次訪問會檢查一下配置,并安裝,沒有問題的話最后finish就ok了
5 在cacti用戶的cron里添加,這樣cacti將每5分鐘收集一次數(shù)據(jù),poller.php路徑按照自己的來
*/5 * * * * php -f /var/www/cacti/poller.php >/dev/null 2>&1
4 cacti的插件安裝
wget
[url]http://cactiusers.org/downloads/cacti-plugin-arch.tar.gz[/url]解壓,然后將cacti-plugin-0.8.7b-PA-v2.1.diff復(fù)制到cacti的目錄,
執(zhí)行patch -p1 -N < cacti-plugin-0.8.7b-PA-v2.1.diff
(如果沒有patch就安裝一個yum install patch,----yum真是方便)
安裝文件中有一個pa.sql的數(shù)據(jù)庫文件需要導(dǎo)入
mysql -ucacti -pxxxxxx cacti<pa.sql
修改cacti/include/global.php文件
$config['url_path'] = '/cacti/';
這個url需要修改,按照自己的配置改吧。
5 Nagios安裝
yum install nagios nagios-plugins
安裝完后有幾個地方需要進(jìn)行配置
1 還是httpd的訪問權(quán)限,安全起見還是生成一個passwd的吧
htpasswd -c /etc/nagios/htpasswd.users nagiosadmin
這里需要說明一下用戶名如果不是nagiosadmin的話,還需要修改cgi.cfg(yum 安裝會將nagios的配置文件放在/etc/nagios下)
authorized_for_system_information=nagiosadmin
authorized_for_configuration_information=nagiosadmin
authorized_for_system_commands=nagiosadmin
authorized_for_all_services=nagiosadmin
authorized_for_all_hosts=nagiosadmin
authorized_for_all_service_commands=nagiosadmin
authorized_for_all_host_commands=nagiosadmin
修改以上幾個的nagiosadmin為自定義的用戶名,否則你將沒有權(quán)限看見服務(wù)器的信息。
2 nagios的安裝到這里就完成了,至于詳細(xì)的配置網(wǎng)上也有很多例子。nagios-3X支持模版繼承,這個東西非常好,可以使今后的配置簡單許多。Nagios的配置很靈活,可以根據(jù)自己的想法來規(guī)整配置文件,可以將100個主機(jī)的信息寫在一個配置文件里,也可以分開寫在100個配置文件里。Nagios的配置無非就是主機(jī),服務(wù),報警的配置,可以寫成簡單的腳本來實現(xiàn)快速添加。
6 ndoutils-1.4b安裝
這個東東其實是將Nagios的配置及監(jiān)控信息存儲到數(shù)據(jù)庫里,NPC通過調(diào)用ndo所存儲的數(shù)據(jù)來展現(xiàn)Nagios的信息。
獲取:
[url]http://sourceforge.net/project/showfiles.php?group_id=26589&package_id=173832&release_id=550909[/url]這個需要用到mysql的mysql-lib及mysql-inc,因此需要安裝mysql-devel(yum install mysql-devel)
解壓后,進(jìn)入目錄執(zhí)行
./configure --prefix=/usr/local/nagios/ --with-mysql-inc=/usr/include/mysql --with-mysql-lib=/usr/lib64/mysql --enable-mysql --disable-pgsql --with-ndo2db-user=nagios --with-ndo2db-group=nagios
依照自己安裝的mysql-lib和mysql-inc指定它的目錄,如果configure沒有任何錯誤信息,就可以make一下,這里--prefix=/usr/local/nagios/其實要不要無所謂,并不實際安裝它,make后我們僅需要它的部分文件。
執(zhí)行make來進(jìn)行編譯
編譯完成后(不需要make install)
進(jìn)入 ndoutils-1.4b7/src目錄<以下為ndo的執(zhí)行文件>
cp ndomod-3x.o ndo2db-3x log2ndo file2sock /usr/bin/
進(jìn)入 ndoutils-1.4b7/config目錄<以下為ndo的配置文件>
cp ndo2db.cfg ndomod.cfg /etc/nagios/
配置ndo2db.cfg
socket_name=/var/nagios/ndo.sock
db_name=cacti
db_prefix=npc_
db_user=cacti
db_pass=xxxxx
debug_level=1
debug_file=/var/nagios/ndo2db.debug
以上為需要根據(jù)自己的實際情況配置的信息,其他配置可以根據(jù)自己需求來進(jìn)行配置。
配置ndomod.cfg
output=/var/nagios/ndo.sock
buffer_file=/var/nagios/ndomod.tmp
以上是需要根據(jù)自己的實際情況修改的,yum安裝和源碼安裝相關(guān)文件的位置可能不一樣,根據(jù)自己的情況來寫吧,ndo默認(rèn)的配置是按照源碼默認(rèn)安裝的文件配置的。
配置nagios.cfg文件
check_external_commands=1
command_check_interval = -1
event_broker_options = -1
broker_module = /usr/bin/ndomod-3x.o config_file=/etc/nagios/ndomod.cfg
process_performance_data=1
以上為需要更改的nagios.cfg的內(nèi)容。
7 Npc的安裝
獲取
[url]http://www.assembla.com/spaces/npc/documents/aUjAwmdW8r3BuPab7jnrAJ/download?filename=npc-2.0.0b.166.tar.gz[/url]解壓,然后將整個文件夾cp至cacti/plugins/下
修改cacti/include/global.php
添加:
$plugins[] = 'npc';
讓cacti知道有這個插件
進(jìn)入
[url]http://yourserver/cacti/[/url]在'User Management'中選擇'admin',在下邊'Realm Permissions'中鉤選'Plugin Management'。這時右側(cè)會出現(xiàn)'Plugin Management'連接,進(jìn)去后在'uninstalled'中安裝npc,然后在'intalled'中enable npc,然后在回去admin的'Realm Permissions'中會出現(xiàn)'use npc',如果沒有鉤選就把它選中。
接著在右側(cè)欄目中選擇settings,點選npc的標(biāo)簽
鉤選Remote Commands
Nagios Command File Path: /var/nagios/rw/nagios.cmd
<這個文件啟動nagios后會產(chǎn)生,根據(jù)實際的位置寫>
Nagios URL:
[url]http://yourserver/nagios/[/url]保存就可以了。
至此安裝就完成了
啟動mysql httpd ndo nagios
service mysqld start
service httpd start
/usr/bin/ndo2db-3x -c /etc/nagios/ndo2db.cfg
service nagios start
訪問
[url]http://yourserver/cacti/[/url]選擇npc標(biāo)簽就可以看到nagios所檢測的主機(jī)信息,唯一不足的是我打開這個頁面的速度有些慢,需要進(jìn)一步尋找原因來進(jìn)行優(yōu)化.npc提供的這一套界面很好看(個人感覺)。