簡介
Nagios是一個監視系統運行狀態和網路信息的監視系統。Nagios能監視所指定的本地或遠程主機以及服務,同時提供異常通知功能等。
Nagios可運行在Linux/Unix平台之上,同時提供一個可選的基於瀏覽器的WEB界面以方便系統管理人員查看網路狀態,各種系統問題,以及日誌等等。
概述
Nagios是一款開源的免費網路監視工具,其功能強大,靈活性強。能有效監控Windows、Linux和Unix的主機狀態,交換機路由器等網路設定,印表機等。在系統或服務狀態異常時發出郵件或簡訊報警第一時間通知網站運維人員,在狀態恢復後發出正常的郵件或簡訊通知。 |
功能介紹
Nagios 可以監控的功能有:
1、監控網路服務(SMTP、POP3、HTTP、NNTP、PING等);
2、監控主機資源(處理器負荷、磁碟利用率等);
3、簡單地外掛程式設計使得用戶可以方便地擴展自己服務的檢測方法;
4、並行服務檢查機制;
5、具備定義網路分層結構的能力,用"parent"主機定義來表達網路主機間的關係,這種關係可被用來發現和明晰主機宕機或不可達狀態;
6、當服務或主機問題產生與解決時將告警傳送給聯繫人(通過EMail、簡訊、用戶定義方式);
7、可以定義一些處理程式,使之能夠在服務或者主機發生故障時起到預防作用;
8、自動的日誌滾動功能;
9、可以支持並實現對主機的冗餘監控;
10、可選的WEB界面用於查看當前的網路狀態、通知和故障歷史、日誌檔案等;
11、可以通過手機查看系統監控信息;
12、可指定自定義的事件處理控制器;
系統需求
Nagios所需要的運行條件是機器必須可以運行Linux(或是Unix變種)並且有c語言編譯器。你必須正確地配置TCP/IP協定棧以使大多數的服務檢測可以通過網路得以進行。你需要但並非必須正確地配置Nagios里的CGIs程式,而一旦你要使用CGI程式時,你必須要安裝以下這些軟體...一個WEB服務(最好是Apache)
Nagios的安裝
1.安裝基礎支持套件和添加用戶
nagios需要一些基礎支持套件才能運行,如apache,gcc,glibc,GD庫等。
#yum install httpd
#yum install gcc
#yum install glibc glibc-common
#yum install gd gd-devel
#/USR/sbin/useradd -m nagios 添加一個名為nagios的用戶用以專門跑nagios
#passwd nagios 設定密碼
#/usr/sbin/groupadd nagcmd 添加nagcmd用戶組,用以通過web頁面提交外部控制命令
#/usr/sbin/usermod -a -G nagcmd nagios 將nagios用戶加入nagcmd組
#/usr/sbin/usermod -a -G nagcmd apache 將apache用戶加入nagcmd組
2.安裝nagios
#mkdir ~/downloads
#cd ~/downloads
#wget http://osdn.dl.sourceforge.net/sourceforge/nagios/nagios-3.0.6.tar.gz
#wget http://osdn.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.13.tar.gz
#cd ~/downloads
#tar xzf nagios-3.0.6.tar.gz
#cd nagios-3.0.6
#./configure --with-command-group=nagcmd
#make all
#make install
#make install-init
#make install-config
#make install-commandmode
這時nagios基本已經安裝完成,默認安裝後的配置檔案用於啟動nagios是沒有問題的。
#vi usr/local/nagios/etc/objects/contacts.cfg
修改nagiosadmin這行其中的郵件地址為你的email地址,以將報警郵件發到你的信箱
#make install-webconf 安裝nagios的web接口
#htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
設定登入web界面時HTTP驗證的賬號密碼
#service httpd restart 啟動apache
#########
3. 安裝nagios-plugins
nagios-plugins是nagios官方提供的一套外掛程式程式,nagios監控主機的功能其實都是通過執行外掛程式程式來實現的。
#cd ~/downloads
#tar xzf nagios-plugins-1.4.13.tar.gz
#cd nagios-plugins-1.4.13
#./configure --with-nagios-user=nagios --with-nagios-group=nagios
#make
#make install
安裝外掛程式,安裝後所有外掛程式命令將被安裝到/usr/local/nagios/libexec 目錄下
4.安裝nagios-snmp-plugins
nagios-snmp-plugins是一套用Perl編寫的通過SNMP方式監控主機的外掛程式程式。
#cd ~/downloads
#wget http://nagios.manubulon.com/nagios-snmp-plugins.1.1.1.tgz
#tar xzf nagios-snmp-plugins.1.1.1.tgz
#cd nagios_plugins
配置check_snmp_int.pl這些外掛程式的使用時需要配置CPAN,CPAN是Comprehensive Perl Archive Network的縮寫.。它是一個巨大的Perl軟體收藏庫,收集了大量有用的Perl模組(modules)及其相關的檔案。這裡主要是使用Perl-Net-SNMP模組。有兩種方式安裝:
A)通過CPAN來安裝
#perl -MCPAN -e shell
cpan> install Net::SNMP
B) 手工安裝
首先去官方網站www.cpan.org下載以下幾個模組
crypt::DES
Digest::MD5
Digest::SHA1
Digest::HMAC
Net::SNMP
下載後對於每個模組依次按照下面的方式安裝
#tar zxf
#./install.sh
執行nagios-snmp-plugins安裝腳本,執行之後會將外掛程式命令安裝到/usr/local/nagios/libexec下
5.其他設定
至此nagios基本已經安裝完畢,但這時還不能馬上啟動nagios,需要以下設定。
#chkconfig --add nagios 將nagios添加到服務中
#chkconfig nagios on 設定服務為自啟動
#/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
檢測nagios的配置是否正確,在後面配置nagios過程中我們為了檢測配置的是否正確需要不斷執行該命令來檢查配置檔案。
#service nagios start 啟動nagios
需要注意的是,Centos默認打開了SELinux並且運行於強制安全模式,這將導致在打開nagios的web界面時會出現Internet Server Error的錯誤。
#getenforce 查看是否運行於強制模式,結果為1表示是
#setenforce 0 更改selinux運行於寬容模式
但是這個設定重啟後就會失效,如需要重啟後保持該設定需要修改/etc/sysconfig/selinux,將其中的SELINUX= enforcing更改為SELINUX= permissive並重啟系統。當然你也可以改成disable禁用selinux。
也可以不更改selinux的運行模式,解決辦法為:
#chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/
#chcon -R -t httpd_sys_content_t /usr/local/nagios/share/
6.實現MSN報警
要實現MSN報警需要使用phpmsnclass,這是一個用php實現的msn機器人程式。
#cd ~/downloads
#wget http://phpmsnclass.googlecode.com/files/phpmsnclass_1.9.7z
下載phpmsnclass,此檔案為7Zip壓縮格式,需要安裝7z
#wget http://nchc.dl.sourceforge.net/sourceforge/p7zip/p7zip_4.65_x86_linux_bin.tar.bz2
#tar jxvf p7zip_4.65_x86_linux_bin.tar.bz2
#cd p7zip_4.65
#./install.sh 安裝7z
#cd -
#7z e phpmsnclass_1.9.7z 解壓檔案
phpmsnclass需要php支持,安裝php,這裡為了方便就直接完成LAMP環境的安裝
#yum -y install mysql-server 安裝mysql資料庫,後面安裝cacti需要
由於安全原因請將mysql設定為只監聽在127.0.0.1上,並刪除mysql庫中默認的除了root@localhost外的所有用戶,相關設定請見以前的關於postfix安裝中的設定。
#yum install -y php php-cli php-XCache php-mysql php-mbstring php-gd php-PgSQL php-mcrypt php-mhash php-xml php-bcmath 安裝php相關模組
msn報警有2種方式,一種是直接使用php進行登入驗證傳送訊息,另外一個是以msn機器人的形式傳送,將訊息存儲在目錄內。這裡採用第二種。
#cd phpmsnclass
#mkdir /var/spool/MSNBot
#mkdir /var/spool/msnbot/log
#mkdir /var/spool/msnbot/spool
下面把msnbot.php, config.php和msn.class.php拷貝到/var/spool/msnbot/
#cp msnbot.php config.php msn.class.php /var/spool/msnbot
#chmod 777 /var/spool/msnbot/spool
#chmod o+t /var/spool/msnbot/spool
這個機器人的工作原理是如果要傳送訊息,就調用php生成訊息檔案到
/var/spool/msnbot/spool目錄中,傳送程式檢查到該目錄有新檔案就會模擬msn登入和發信將信息傳送出去。
#chmod +x /var/spool/msnbot/msnbot.php
#vi config.php
在配置檔案中設定MSN的賬號和密碼(以後報警通過這個MSN發出)
#cp msnbot.sh /etc/init.d/
#chmod +x msnbot.sh 加上執行許可權
#vi msnbot.sh
在啟動函數裡執行的php檔案前要加上php (php後有空格)
#./msnbot.sh start 啟動MSN機器人
下面發個訊息測試一下
#php msnsendmsg.php [email protected] "this is a test2"
向[email protected]的MSN賬號傳送測試信息
注意需要將[email protected]和config.php里設定的MSN賬號相互加為好友
如果成功接收到信息說明配置正確,此步驟到此結束,後面的能讓Nagios使用MSN進行報警的功能需要到Nagios里設定了。
如果需要支持離線訊息即當你在離線狀態下也能接收到機器人的信息,需要使用MSNP15協定,修改相關發信的php檔案將聲明新類的地方new MSN的第一個參數改為MSNP15
nagios的配置
nagios目錄結構比較清晰,安裝後下面一共有bin etc libexec sbin share var幾個目錄,其中配置檔案都存放在etc目錄下,bin下存放的是nagios的相關命令,sbin下存放的是通過web方式外部執行的cgi,libexec存放的是所有外掛程式,而var則存放的是log和pid檔案等。而實現監控都是依靠執行外掛程式來實現的。
要實現監控,需要在nagios中定義一個service,在這個service中指定監控對象和監控命令以及報警機制等。Nagios的配置關係可以按照下圖來做說明:
nagios的配置也比較清晰明了,etc目錄下默認有objects目錄和一些配置檔案,其中objects里放的是主配置檔案nagios.cfg包含進去的配置檔案。在nagios.cfg中既可以指定單獨包含一個cfg,也可以指定一個包含目錄,即該目錄下所有的cfg檔案都會包含進來。
首先我們配置下主配置檔案,為了目錄的清晰我們自己建立一些目錄來存放相關的配置檔案,比如建立commands目錄存放命令,建立services目錄存放服務,建立hosts目錄存放主機,在nagios.cfg檔案中找到cfg_file的部分,下面是一個示例,實際部署的時候可以按照你自己的情況去設定:
cfg_file=/usr/local/nagios/etc/objects/commands.cfg 包含配置檔案,下同
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
cfg_file=/usr/local/nagios/etc/objects/templates.cfg
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
cfg_file=/usr/local/nagios/etc/objects/switch.cfg
cfg_dir=/usr/local/nagios/etc/services 包含配置目錄,目錄下所有cfg檔案將被包含;下同
cfg_dir=/usr/local/nagios/etc/hosts
cfg_dir=/usr/local/nagios/etc/commands
cfg_dir=/usr/local/nagios/etc/switches
cfg_dir=/usr/local/nagios/etc/Routers
nagios.cfg其他地方可以暫不調整,該檔案中具體參數請參考附屬檔案中的配置檔案中文注釋
這裡先說明一下,監控都是依靠外掛程式去完成的,舉個例子說明,如我們要監控60.222.111.83這台伺服器的虛擬記憶體,當達到70%的時候狀態為警告,達到90%的時候為嚴重。這個依靠check_snmp_storage.pl這個外掛程式來完成。
[root@localhost etc]# /usr/local/nagios/libexec/check_snmp_storage.pl -H 60.222.111.83 -C mypublic -2 -m "^Virtual Memory$" -w 70 -c 90
Virtual Memory: 21%used(531MB/2472MB) (<70%) : OK
其中-H參數表示主機地址,-C參數表示SNMP團體名稱,-2表示使用SNMP v2協定,-w為warning(警告)狀態的閾值,-c表示為critical(嚴重)狀態的閾值
要用nagios實現監控某主機,就是要實現用nagios調用這樣的命令即可。
配置resource.cfg,檔案內容:
[root@localhost etc]# cat resource.cfg |grep -v '#'| sed /^$/d 查看resource.cfg配置
$USER1$=/usr/local/nagios/libexec
$USER7$=-C mypublic -2
這裡其實是定義兩個變數$USER1$和$USER7$,因為在後面定義command的時候外掛程式的路徑是絕對路徑,為了節省輸入直接可以用$USER1$代替/usr/local/nagios/libexec。而SNMP外掛程式的命令行中的參數需要設定SNMP相關的信息,為節省輸入這裡用$USER7$來代替
-C mypublic -2。大家可對照上面檢測60.222.111.83的虛擬記憶體的例子結合來加以理解。
下面我們來定義一個command用以監控,仍然以在nagios中實現監控60.222.111.83這台主機的虛擬記憶體為例說明。為了目錄結構的清晰,我們將command的定義都放到commands目錄下。在commands下建立一個cfg後綴的檔案,針對此示例的command定義內容為
define command{
command_name check_snmp_storage
command_line $USER1$/check_snmp_storage.pl -H $HOSTADDRESS$ $USER7$ $ARG1$ -w $ARG2$ -c $ARG3$
}
其中的$USER1$和$USER7$即為我們在上面的resource.cfg中定義的兩個變數,$HOSTADDRESS$為我們在下面要定義的主機。
在hosts目錄下建立一個cfg後綴的檔案來存放主機配置。
define host{
use windows-server 定義使用的模板
host_name web83 定義主機名為web83
alias web server on 111.83 主機別名
address 60.222.111.83 主機IP位址
hostgroups linuxtoneweb 將該主機歸到linuxtoneweb這個組,如果要歸到多個組裡,用逗號分隔組名
}
在定義主機的時候我們將83歸到了linuxtoneweb這個組,下面來定義這個組名。可以直接在hosts下建立一個定義組名的cfg檔案。
define hostgroup{
hostgroup_name linuxtoneweb
alias linuxtone web servers
}
這樣就定義了一個linuxtoneweb組,將主機歸為一個組有兩種方法,一種是我們這種在主機的定義中去設定,另外一種是在組的設定中定義members。如下:
define hostgroup{
hostgroup_name linuxtoneweb
alias linuxtone web servers
members web83 設定該組的成員,需要是在host中定義的主機名,多個成員請用逗號分隔
}
在定義主機分組裡面我們還可以用hostgroup_members定義下級分組,十分方便。
OK,上面我們完成了命令、主機的定義,下面我們就要進入nagios監控某個對象的關鍵設定,nagios的監控都是靠定義一個service來實現,這裡我們定義一個service來實現監控83的虛擬記憶體。在services目錄下建立一個cfg檔案。
define service {
hostgroup_name linuxtone,linuxtoneweb,database 定義監控對象
name memory 設定服務名
service_description check memory 服務描述
check_period 24x7 監控周期設定
max_check_attempts 4 最大檢測嘗試次數
normal_check_interval 3 正常檢測間隔時間
retry_check_interval 2 重試檢測間隔時間
contact_groups admins 報警聯繫組
notification_interval 10 通知間隔
notification_period 24x7 通知周期設定
notification_options w,u,c,r 定義什麼狀態時報警
check_command check_snmp_storage!-m "^Virtual Memory$"!70!90
}
這樣我們完成對一個service的定義,定義監控對象我們這裡是定義了3個組,即屬於這3個組的所有主機都會檢測虛擬記憶體(注意:組必須在其他檔案中事先定義好)。當然你也可以用host_name針對主機作為檢測對象(多主機用逗號分隔)。監控周期和報警周期我們設定的都是24x7,這個會在後面去定義。定義報警狀態中的w表示warning,u表示unknown,c表示critial,r表示recovery(即恢復後是否傳送通知);報警選項一般生產環境下設定w,c,r即可。最後我們看到實現監控的主體部分
check_command check_snmp_storage!-m "^Virtual Memory$"!70!90
定義實現這個檢測的命令,check_snmp_storage即為我們上面在commands里定義的命令名,
!表示帶入的參數,這裡有三個!表示帶入三個參數到command里,每個參數之間用!分隔,這裡表示第一個參數為-m “^Virtual Memory$”,第二個參數為70,第三個參數為90。下面我們回頭去看看check_snmp_storage這個command的定義:
command_line $USER1$/check_snmp_storage.pl -H $HOSTADDRESS$ $USER7$ $ARG1$ -w $ARG2$ -c $ARG3$
這裡的$ARG1$即表示參數1,$ARG2即表示參數2,$ARG3$即表示參數3
而$HOSTADDRESS$是我們定義的檢測對象,它的值就是我們的主機IP位址;$USER1$和$USER7$為在resource.cfg里的定義。下面我們將參數值代入這個command里,最後實現的效果是:
/usr/local/nagios/libexec/check_snmp_storage.pl –H 60.222.111.83 –C mypublic -2 –m “^Virtual Memory$” –w 70 –c 90
而這個命令就是我們實現監控83的虛擬記憶體的命令!
設定3個參數是為了靈活的針對不同主機的調用,如果你對不同的主機設定的閾值不同,只需要對不同的主機定義不同的service即可,command是可以通用的!而這裡的參數1也是為了實現不同的功能而設定的,這個腳本還可以檢測物理記憶體,如果我們把參數1的值設定為”^Phisical Memory$”就可以針對物理記憶體進行檢測!定義command的時候參數的個數的設定是你可以根據需要設定的。只需要在後面service中能將參數值代到command中最終能實現你要檢測的命令即可。到此為止你可以感受到nagios的靈活性了吧。
到這裡我們基本實現了nagios的監控功能,下面我們繼續來看看其他設定。在定義host的時候我們有個主機模板的設定,這個設定的定義在object/template.cfg中定義的,這是一個系統自帶的配置檔案,關於我們所使用的Windows-Server的模板定義內容為:
# Windows host definition template - This is NOT a real host, just a template!
define host{
name windows-server ; The name of this host template
use generic-host ; inherit default values from the generic-host template
check_period 24x7 ; By default, Windows servers are monitored round the clock
check_interval 5 ; Actively check the server every 5 minutes
retry_interval 1 ; Schedule host check retries at 1 minute intervals
max_check_attempts 10 ; Check each server 10 times (max)
check_command check-host-alive ; Default command to check if servers are "alive"
notification_period 24x7 ; Send notification out at any time - day or night
notification_interval 30 ; Resend notifications every 30 MINUTES
notification_options d,r ; Only send notifications for specific host states
contact_groups admins ; Notifications get sent to the admins by default
hostgroups windows-servers ; Host groups that Windows servers should be a member of
register 0 ; DONT REGISTER THIS - ITS JUST A TEMPLATE
}
objects目錄下的contact.cfg中定義的是報警聯繫人。
define contact{
contact_name nagiosadmin ; Short name of user
use generic-contact ; Inherit default values from generic-contact template (defined above)
alias Nagios Admin ; Full name of user
email [email protected] ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
address1 [email protected] ;這裡是個自定義的變數設定,定義了一個MSN地址用以接收MSN報警信息,聯繫人的自定義變數只能使用address1-address6;通過這個設定你可以實現多種報警方式,如電話,手機簡訊等,通過在這裡設定你的電話,手機號,然後到報警命令定義里定義一個命令即可。
}
其使用了generic-contact這個聯繫模板,關於這個模板templates.cfg里的定義內容為:
define contact{
name generic-contact ; The name of this contact template
service_notification_period 24x7 ; service notifications can be sent anytime
host_notification_period 24x7 ; host notifications can be sent anytime
service_notification_options w,u,c,r,f,s ; send notifications for all service states, flapping events, and scheduled downtime events
host_notification_options d,u,r,f,s ; send notifications for all host states, flapping events, and scheduled downtime events
service_notification_commands Notify-service-by-email,notify-service-by-msn ; send service notifications via email
host_notification_commands notify-host-by-email,notify-host-by-msn ; send host notifications via email
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL CONTACT, JUST A TEMPLATE!
}
上面我在該配置檔案中增加了notify-service-by-msn和notify-service-by-msn的兩種報警命令
而關於報警的周期設定在objects下的timeperiods.cfg中,如我們上面在service里定義的7x24的報警周期設定內容為:
define timeperiod{
timeperiod_name 24x7
alias 24 Hours A Day, 7 Days A Week
sunday 00:00-24:00
monday 00:00-24:00
tuesday 00:00-24:00
wednesday 00:00-24:00
thursday 00:00-24:00
friday 00:00-24:00
saturday 00:00-24:00
}
通過這裡我們可以靈活設定報警時間以和報警方式結合,如周末和休息時間設定報警為傳送簡訊和郵件,工作時間設定為傳送郵件和MSN報警方式。
下面我們來看關於報警命令的設定,在objects下的command.cfg里定義的為
define command{
command_name notify-host-by-email
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $hostname$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$
}
# 'notify-service-by-email' command definition
define command{
command_name notify-service-by-email
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | /bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$
}
# 'notify-host-by-msn' command definition
define command{
command_name notify-host-by-msn
command_line php /usr/local/nagios/share/msn/msnsendmsg.php $CONTACTADDRESS1$ "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n"
}
# 'notify-service-by-msn' command definition
define command{
command_name notify-service-by-msn
command_line php /usr/local/nagios/share/msn/msnsendmsg.php $CONTACTADDRESS1$ "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$"
}
定義了4種報警命令,後面兩種msn報警是我添加的;郵件報警是使用系統自帶的sendmail來傳送郵件的(注意要啟動sendmail服務),而msn報警是使用我們上面所配置的msn機器人傳送的報警信息。
至此,整個nagios的監控和報警機制了解完畢。注意我們在配置過程中的任何改動都記得要去通過/usr/local/nagios/bin/nagios –c /usr/local/nagios/etc/nagios.cfg以檢查配置檔案是否正確,如果正確則可以重啟nagios載入新配置(service nagios restart)
第三部分 安裝cacti
Cacti的運行需要AMP(Apache + MySQL + PHP), rrdtool , net-snmp , AMP環境我們在上面已經配置。
安裝rrdtool,rrdtool不能直接通過yum安裝,可以加入Dag RPM repository以便讓yum能找到rrdtool
#wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
#rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.i386.rpm
#yum install rrdtool
安裝net-snmp
#yum –y install net-snmp net-snmp-utils
安裝cacti
#cd ~/downloads
#wget http://www.cacti.net/downloads/cacti-0.8.7d.tar.gz
#tar zxvf cacti-0.8.7d.tar.gz
#mkdir –p /usr/local/wwwroot
#cp –rf cacti-0.8.7.d /usr/local/wwwroot/cacti
下面開始導入資料庫,mysql資料庫的基本安全配置這裡不做說明,請參考以前的postfix郵件安裝文檔中的mysql設定部分。
#mysql –u root –p
mysql>create database cacti; 創建一個資料庫供cacti使用
mysql>use cacti;
Mysql>source /usr/local/cacti/cacti.sql 導入mysql資料庫
Mysql>grant all privileges on cacti.* to cacti@localhost identified by ‘cactipass’;
添加一個資料庫賬號cacti 密碼為cactipass 用以訪問cacti庫
Mysql>flush privileges; 刷新許可權信息
Apache設定
#vi /etc/http/conf.d/cacti.conf 編輯cacti站點的配置檔案,檔案內容如下:
Alias /cacti "/usr/local/wwwroot/cacti"
修改cacti的配置檔案
#vi /usr/local/wwwroot/cacti/include/config.php
修改其中的資料庫連線信息,設定好資料庫主機地址,用戶,密碼信息。
至此安裝完成,訪問http://ip/cacti/install根據提示安裝cacti (ip換成你對應的主機ip地址)
接下來安裝cacti的外掛程式管理
#cd ~/download/
#wget http://mirror.cactiusers.org/downloads/plugins/cacti-plugin-0.8.7d-PA-v2.4.zip
#unzip cacti-plugin-0.8.7d-PA-v2.4.zip
#mysql –u root –p cacti
第四部分 整合cacti和nagios
整合cacti和nagios是利用了cacti的一個外掛程式nagios for cacti,它的原理是將nagios的數據通過ndo2db導入到mysql資料庫(cacti的庫中),然後cacti讀取資料庫信息將nagios的結果展示出來。
1.安裝ndoutils
首先需要安裝ndoutils以將nagios的數據能導入到mysql資料庫中。
#yum -y install mysql-devel 安裝mysql開發包以編譯ndoutils
#wget http://nchc.dl.sourceforge.net/sourceforge/nagios/ndoutils-1.4b7.tar.gz
#tar zxvf ndoutils-1.4b7.tar.gz
#cd ndoutils
#./configure --enable-mysql --disable-pgsql --with-mysql-lib=/usr/lib/mysql
#make
#cp config/ndomod.cfg /usr/local/nagios/etc
修改nagios主配置檔案
#vi /usr/local/nagios/etc/nagios.cfg
添加以下內容
check_external_commands=1
command_check_interval=-1
event_broker_options=-1
broker_module=/usr/local/nagios/bin/ndomod.o config_file=/usr/local/nagios/etc/ndomod.cfg
process_performance_data=1
添加的內容至此結束
#cd src
#cp ndomod-3x.o nod2db-3x log2ndo file2sock /usr/local/nagios/bin
#cp src/ndo2db-3x /usr/local/nagios/bin/ndo2db
#cp config/ndo2db.cfg /usr/local/nagios/etc
修改配置檔案ndocmd.cfg和ndo2db.cfg,這裡我的配置檔案內容為:
[root@localhost downloads]# cat /usr/local/nagios/etc/ndomod.cfg |grep -v '^#'|sed /^$/d
instance_name=default
output_type=tcpsocket
output=127.0.0.1
tcp_port=5668
output_buffer_items=5000
buffer_file=/usr/local/nagios/var/ndomod.tmp
file_rotation_interval=14400
file_rotation_timeout=60
reconnect_interval=15
reconnect_warning_interval=15
data_processing_options=-1
config_output_options=2
[root@localhost downloads]# cat /usr/local/nagios/etc/ndo2db.cfg |grep -v '^#'|sed /^$/d
ndo2db_user=nagios
ndo2db_group=nagios
socket_type=tcp
socket_name=/usr/local/nagios/var/ndo.sock
tcp_port=5668
db_servertype=mysql
db_host=127.0.0.1
db_port=3306
db_name=cacti
db_prefix=npc_
db_user=cacti
db_pass=cacti2008
max_timedevents_age=1440
max_systemcommands_age=10080
max_servicechecks_age=10080
max_hostchecks_age=10080
max_eventhandlers_age=44640
debug_level=1
debug_verbosity=1
debug_file=/usr/local/nagios/var/ndo2db.debug
max_debug_file_size=1000000
#/usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg 啟動ndo2db
2.安裝php-json
npc展示部分用到json,需要在php中安裝php-json的支持,centos 5下的php 版本默認是5.1.6 不帶json支持,無法簡單地通過yum install php5-json方式來安裝。
#cd ~/downloads
#wget http://www.aurore.net/projects/php-json/php-json-ext-1.2.0.tar.bz2
#tar xvjf php-json-ext-1.2.0.tar.bz2
#cd php-json-ext-1.2.0
#phpize 編譯前初始化php環境
#./configure
#make
#make install
#vi /etc/php.d/json.ini
extension=php_json.so
#/usr/sbin/apache2ctl graceful 重啟apache
為了驗證是否成功可使用phpinfo查看是否已支持json
3.安裝npc
#cd ~/downloads
#wget http://www.assembla.com/spaces/npc/documents/aUjAwmdW8r3BuPab7jnrAJ/download?filename=npc-2.0.0b.166.tar.gz
#mv npc /usr/local/wwwroot/cacti/plugins/
啟用cacti的外掛程式功能,以admin用戶登入cacti,在console中的user management里對admin的用戶許可權進行編輯,勾選上Plugin Management,然後到外掛程式管理中心安裝並啟用NPC即可。
至此完成nagios和cacti的整合。。
版本發布
2009年08月13日,企業監控系統 Nagios 3.2.0 發布。
2010年10月05日,Nagios 3.2.3 發布,企業級監控系統。
2012年05月08日,Nagios 3.4.0 發布,企業級監控系統。
2012年05月14日,Nagios 3.4.1 發布。
2012年12月01日,Nagios 3.4.3 發布,企業級監控系統.
2013年01月18日,Nagios 3.4.4 發布,企業級監控系統。
2013年03月18日,Nagios 3.5.0 發布,企業級監控系統。