Nagios的安裝部署和與Cacti的整合

來源:本站原創 Linux 超過965 views圍觀 0條評論

 

本文檔基于CENTOS5.2系統和Nagios實現網管監控功能,并與Cacti實現整合。Centos初始安裝后的一些系統基本設置工作本文檔不做說明,請參考相關資料。
文檔版本:V1.0
最后修改:2009-3-19 By NetKey

系統環境:CentOS5.2
格式約定:

黑色粗體:為輸入命令部分

紅色粗體:為需要按你的環境修改的部分

綠色粗體:系統返回的提示信息

藍色粗體:文檔注釋部分

Nagios是一款開源的免費網絡監視工具,其功能強大,靈活性強。能有效監控Windows、Linux和Unix的主機狀態,交換機路由器等網絡設置,打印機等。本文檔主要實現nagios監控windows主機,nagios監控windows系統有三種實現方式:SNMP、NSClient++、NRPE,后面兩種方式都需要在windows上安裝agent,因目前服務器上都開啟了SNMP,所以本文檔只介紹使用SNMP方式來監控Windows。
第一部分: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   安裝nagiosweb接口
#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 <module>.tar.gz <module>表示模塊名,具體請按上面提到的模塊替換

#cd <module> <module>表示模塊名,具體請按上面提到的模塊替換

#perl Makefile.pl

#make test

#make install

注意:Net::SNMP模塊必須在最后安裝。至此Net::SNMP手動安裝完畢

#./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庫中默認的除了[email protected]外的所有用戶,相關設置請見以前的關于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這個插件來完成。

[[email protected] 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,文件內容:

[[email protected] 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 24×7 監控周期設置

max_check_attempts 4 最大檢測嘗試次數

normal_check_interval 3 正常檢測間隔時間

retry_check_interval 2 重試檢測間隔時間

contact_groups admins 報警聯系組

notification_interval 10 通知間隔

notification_period 24×7 通知周期設置

notification_options w,u,c,r 定義什么狀態時報警

check_command check_snmp_storage!-m "^Virtual Memory$"!70!90

}

這樣我們完成對一個service的定義,定義監控對象我們這里是定義了3個組,即屬于這3個組的所有主機都會檢測虛擬內存(注意:組必須在其他文件中事先定義好)。當然你也可以用host_name針對主機作為檢測對象(多主機用逗號分隔)。監控周期和報警周期我們設置的都是24×7,這個會在后面去定義。定義報警狀態中的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 24×7 ; 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 24×7 ; 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 24×7 ; service notifications can be sent anytime

host_notification_period 24×7 ; 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里定義的7×24的報警周期設置內容為:

define timeperiod{

timeperiod_name 24×7

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 [email protected] identified by ‘cactipass’;

添加一個數據庫賬號cacti 密碼為cactipass 用以訪問cacti

Mysql>flush privileges;
刷新權限信息

Apache設置

#vi /etc/http/conf.d/cacti.conf 編輯cacti站點的配置文件,文件內容如下:

Alias /cacti "/usr/local/wwwroot/cacti"

<Directory "/usr/local/wwwroot/cacti">

Options FollowSymLinks MultiViews

AllowOverride None

Order allow,deny

Allow from all

</Directory>

修改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<pa.sql 導入sql到cacti庫中

#cd cd files-0.8.7d/

#cp –rf * /usr/local/wwwroot/cacti 復制相關文件到cacti

第四部分 整合cactinagios

整合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,這里我的配置文件內容為:

[[email protected] 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

[[email protected] 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的整合。

文章出自:CCIE那點事 http://www.qdxgqk.live/ 版權所有。本站文章除注明出處外,皆為作者原創文章,可自由引用,但請注明來源。 禁止全文轉載。
本文鏈接:http://www.qdxgqk.live/?p=3068轉載請注明轉自CCIE那點事
如果喜歡:點此訂閱本站
?
?
萌宠夺宝游戏