爛泥:nagios學習(四):pnp4nagios圖形化繪製nagios數據

本文首發於爛泥行天下php

在nagios安裝完畢後,咱們也添加了一些監控對象,可是你會發現nagios只是簡單的給咱們列出那些監控對象是正常的,而沒有把這些監控對象的數據進行整合。以下:linux

clip_p_w_picpath001

其實nagios已經給咱們提供了一個製圖工具pnp4nagios,只是咱們尚未安裝而已。ios

pnp4nagios是一個基於php和perl語言的強大工具,它能夠經過process_perfdata.pl腳本調用rrdtool對nagios的性能數據進行分析並繪製成相應的性能圖。因此在安裝pnp4nagios以前,咱們必須先安裝php、perl、rrdtool。web

爲了實驗的方便,在此咱們對php、perl使用yum方式進行安裝。數據庫

對於rrdtool的安裝,見下面文章。apache

注意:本篇文章,全部的操做都是在nagios服務器上進行的。服務器

1、什麼是rrdtool網絡

rrdtool是Round Robin Database Tool的縮寫。從功能上說,rrdtool可用於數據存儲+數據展現。著名的網絡流量繪圖軟件cacti和集羣監控系統Ganglia使用的都是rrdtool。session

在數據存儲方面,rrdtool採用「Round Robin」模式存儲數據,即環狀數據庫。注意:rrdtool數據庫文件後綴名爲「.rrd」。ide

有關rrdtool的詳細介紹,能夠參考百度百科。

http://baike.baidu.com/view/1867979.htm

在數據展現方面,rrdtool能夠看做是一個強大的繪圖引擎。下圖是其官網上的一張效果圖,咱們大體瞭解rrdtool的繪圖能力。

clip_p_w_picpath002

介紹完畢rrdtool的功能後,咱們如今來安裝rrdtool。

2、安裝rrdtool

rrdtool的安裝,咱們從源碼方式和yum方式安裝進行介紹。

2.1 源碼方式安裝

源碼方式安裝,咱們分幾個步驟。

2.1.1 下載rrdtool軟件包

到rrdtool官網下載,最新的源碼包。以下:

http://oss.oetiker.ch/rrdtool/

clip_p_w_picpath003

下載rrdtool:

http://oss.oetiker.ch/rrdtool/pub/?M=D

clip_p_w_picpath004

wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.5.0-rc2.tar.gz

clip_p_w_picpath005

2.1.2 安裝基礎庫

在正式安裝rrdtool以前,咱們還必需要安裝rrdtool編譯時,所須要的基礎庫。以下:

yum -y install gcc cairo-devel libxml2-devel pango-devel pango libpng-devel freetype freetype-devel libart_lgpl-devel

clip_p_w_picpath006

2.1.3 安裝rrdtool

基礎庫安裝完畢後,咱們如今開始正式安裝rrdtool。

解壓rrdtool軟件包,以下:

tar -xf rrdtool-1.5.0-rc2.tar.gz

cd rrdtool-1.5.0-rc2

clip_p_w_picpath007

配置rrdtool,以下:

./configure

clip_p_w_picpath008

clip_p_w_picpath009

編譯rrdtool,以下:

make

clip_p_w_picpath010

clip_p_w_picpath011

安裝rrdtool,以下:

make install

clip_p_w_picpath012

2.1.4 查看rrdtool安裝路徑

rrdtool安裝完畢後,咱們如今來查看rrdtool的安裝路徑。若是沒有特地指定rrdtool安裝路徑的話,rrdtool默認安裝路徑爲/opt/rrdtool-1.5.0-rc2/。這個咱們能夠經過在安裝配置rrdtool時能夠知道,以下:

./configure --help

clip_p_w_picpath013

查看rrdtool安裝的內容,以下:

ll /opt/rrdtool-1.5.0-rc2/

clip_p_w_picpath014

2.1.5 驗證rrdtool

rrdtool安裝完畢後,咱們來驗證是否正確安裝。咱們使用以下命令:

/opt/rrdtool-1.5.0-rc2/bin/rrdtool -v

clip_p_w_picpath015

經過上圖,咱們能夠很明顯的看到rrdtool的用法以及版本信息。這也就說明了rrdtool已經被正確的安裝。

2.2 yum方式安裝

rrdtool的yum方式安裝就比較簡單了,直接使用以下命令進行安裝。

yum -y install rrdtool rrdtool-perl

clip_p_w_picpath016

rrdtool安裝完畢後,咱們來查看其安裝的位置,以下:

which rrdtool

rpm -ql rrdtool

clip_p_w_picpath017

經過上圖,咱們能夠很明顯的看到rrdtool的yum方式安裝,把rrdtool安裝到/usr/bin目錄下。

rpm -ql rrdtool-perl

clip_p_w_picpath018

注意:

/usr/lib64/perl5/vendor_perl/auto/RRDs是rrds perl模塊的路徑,這個咱們在安裝配置pnp4nagios時會使用到。

3、安裝pnp4nagios

在前文,咱們已經介紹了有關pnp4nagios的功能。

pnp4nagios是一個基於php和perl語言的強大工具,它能夠經過process_perfdata.pl腳本調用rrdtool對nagios的性能數據進行分析並繪製成相應的性能圖。

pnp4nagios的安裝,咱們也能夠分爲源碼方式和yum方式安裝,下面一一進行介紹。

3.1 下載pnp4nagios軟件包

要源碼方式安裝pnp4nagios,咱們須要下載pnp4nagios軟件包,這個咱們能夠去其官網進行下載。以下:

http://docs.pnp4nagios.org

clip_p_w_picpath019

http://docs.pnp4nagios.org/pnp-0.6/start

clip_p_w_picpath020

http://sourceforge.net/projects/pnp4nagios/

clip_p_w_picpath021

wget http://jaist.dl.sourceforge.net/project/pnp4nagios/PNP-0.6/pnp4nagios-0.6.25.tar.gz

clip_p_w_picpath022

3.2 安裝perl-Time-HiRes組件

perl-Time-HiRes組件必定要在安裝配置pnp4nagios以前安裝,不然在安裝配置pnp4nagios時,提示以下的錯誤信息:

configure: error: Perl Module Time::HiRes not available

clip_p_w_picpath023

使用以下命令進行安裝perl-Time-HiRes擴展組件,以下:

yum -y install perl-Time-HiRes

clip_p_w_picpath024

3.3 源碼安裝pnp4nagios

解壓pnp4nagios軟件包,以下:

tar -xf pnp4nagios-0.6.25.tar.gz

cd pnp4nagios-0.6.25

clip_p_w_picpath025

配置pnp4nagios,以下:

./configure --with-rrdtool=/opt/rrdtool-1.5.0-rc2/bin/rrdtool --with-perl_lib_path=/opt/rrdtool-1.5.0-rc2/lib/perl/5.10.1/x86_64-linux-thread-multi/auto/RRDs

clip_p_w_picpath026

注意:

--with-rrdtool=/opt/rrdtool-1.5.0-rc2/bin/rrdtool

表示的是rrdtool命令的路徑。在此rrdtool,咱們使用的是源碼方式安裝。

--with-perl_lib_path=/opt/rrdtool-1.5.0-rc2/lib/perl/5.10.1/x86_64-linux-thread-multi/auto/RRDs

表示的是RRD perl模塊路徑。在此rrdtool,咱們使用的是源碼方式安裝。

若是不指定rrds perl模塊所在路徑的話,配置時會顯示以下錯誤:

RRDs Perl Modules: *** NOT FOUND ***

clip_p_w_picpath027

若是rrdtool使用的是yum方式安裝的話,pnp4nagios配置時須要使用如下命令,以下:

./configure --with-perl_lib_path=/usr/lib64/perl5/vendor_perl/auto/RRDs

由於yum方式安裝rrdtool,會把RRD perl模塊安裝到/usr/lib64/perl5/vendor_perl/auto/RRDs路徑下。以下:

clip_p_w_picpath018[1]

pnp4nagios配置沒有問題的話,會顯示如下的界面:

clip_p_w_picpath028

編譯pnp4nagios,以下:

make all

clip_p_w_picpath029

注意:

經過上圖,咱們知道pnp4nagios的最後一步的安裝有兩種方法:一是make install進行一步一步的安裝pnp4nagios,二是使用make fullinstall進行自動安裝。

爲了能更進一步學習pnp4nagios的安裝,在此咱們使用的是make install。以下:

make install

clip_p_w_picpath030

clip_p_w_picpath031

注意:pnp4nagios默認的安裝路徑是/usr/local/pnp4nagios/,這個咱們能夠經過配置幫助信息獲得。以下:

./configure --help

clip_p_w_picpath032

安裝pnp4nagios的web配置文件,以下:

make install-webconf

clip_p_w_picpath033

注意:若是apache是使用源碼安裝的話,咱們在執行make install-webconf會報錯。

不要怕,咱們只須要把sample-config/httpd.conf複製到/usr/local/apache2/conf/下,並重命名爲pnp4nagios.conf便可。在這apache是安裝到/usr/local/apache2下。以下:

cp sample-config/httpd.conf /usr/local/apache2/conf/ pnp4nagios.conf

ll /usr/local/apache2/conf/

以上操做以後,咱們還須要在/usr/local/apache/conf/httpd.conf 文件中添加 Include conf/pnp4nagios.conf。最後,咱們還要重啓apache。

安裝pnp4nagios的配置文件,以下:

make install-config

clip_p_w_picpath034

安裝pnp4nagios啓動的初始化腳本,以下:

make install-init

clip_p_w_picpath035

3.4 pnp4nagios目錄介紹

pnp4nagios安裝完畢後,咱們來查看下其安裝的目錄,以下:

ll /usr/local/pnp4nagios/

clip_p_w_picpath036

下面來介紹下pnp4nagios的目錄,以下:

bin目錄用來存放pnp4nagios啓動命令npcd。以下:

/usr/local/pnp4nagios/bin/npcd -h

clip_p_w_picpath037

pnp4nagios開機啓動腳本就是由這個命令控制,以下:

vi /etc/init.d/npcd

clip_p_w_picpath038

etc目錄主要存放pnp4nagios各類配置文件,以下:

ll /usr/local/pnp4nagios/etc/

clip_p_w_picpath039

lib目錄存放pnp4nagios的庫文件。

libexec目錄存放pnp4nagios執行的插件,好比process_perfdata.pl。

clip_p_w_picpath040

其餘的目錄就不須要作介紹了。

3.5 yum安裝pnp4nagios

經過yum方式安裝pnp4nagios,咱們須要配置額外的yum源。以下:

http://dl.fedoraproject.org/pub/epel/6/x86_64/

clip_p_w_picpath041

下載並安裝額外的yum源軟件包。以下:

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

clip_p_w_picpath042

查看額外yum源安裝的文件,以下:

rpm -ql epel-release

clip_p_w_picpath043

經過上圖能夠很明顯的看出,安裝額外yum源就是安裝repo文件。有關repo文件的使用,能夠參考這篇文章《爛泥:yum的使用及配置》。

安裝pnp4nagios,以下:

yum -y install pnp4nagios

clip_p_w_picpath044

clip_p_w_picpath045

注意:

yum安裝pnp4nagios時,是會安裝nagios。因此,若是咱們的nagios是源碼安裝的話,建議pnp4nagios也使用源碼安裝。若是nagios是yum方式安裝的話,pnp4nagios也使用yum方式安裝。

4、配置pnp4nagios

pnp4nagios安裝完畢後,咱們如今來配置pnp4nagios。

切換到pnp4nagios的安裝目錄的etc目錄下,以下:

cd /usr/local/pnp4nagios/etc/

clip_p_w_picpath046

如今開始修改etc目錄下內容,以下:

mv misccommands.cfg-sample misccommands.cfg

mv nagios.cfg-sample nagios.cfg

mv rra.cfg-sample rra.cfg

clip_p_w_picpath047

修改etc/pages目錄下內容,以下:

mv pages/web_traffic.cfg-sample pages/web_traffic.cfg

clip_p_w_picpath048

修改etc/check_commands目錄下內容,以下:

mv check_commands/check_all_local_disks.cfg-sample check_commands/check_all_local_disks.cfg

mv check_commands/check_nrpe.cfg-sample  check_commands/check_nrpe.cfg

mv check_commands/check_nwstat.cfg-sample  check_commands/check_nwstat.cfg

clip_p_w_picpath049

以上修改完畢後,咱們來配置pnp4nagios的工做模式。

5、pnp4nagios工做模式

pnp4nagios有5種工做模式,它們分別是Synchronous Mode、Bulk Mode、Bulk Mode with NPCD、Bulk Mode with NPCD and npcdmod和Gearman Mode。

5.1 Synchronous Mode模式

Synchronous Mode(同步模式)是最簡單的一種集成方式,它的工做原理是直接將process_perfdata.pl腳本集成到nagios中,而且每一個event都執行一次調用。以下圖:

clip_p_w_picpath050

5.2 Bulk Mode模式

Bulk Mode(Bulk模式)相對同步式複雜一點,因爲同步模式是對每一個event都進行處理,若是主機和服務數大就會形成監控服務器的性能降低。

在Bulk模式中,nagios會將性能數據以特定的格式寫到一個臨時目錄中。pnp4nagios則按期調用process_perfdata.pl進行處理,處理完成後刪除數據文件。這種方式減少了處理的次數,同時也減小了nagios主機的IO訪問及負載,彌補了同步模式中的不足。以下圖:

clip_p_w_picpath051

5.3 Bulk Mode with NPCD模式

Bulk Mode with NPCD模式,從名字上能夠看出,這種模式和Bulk模式差很少,只是多了一步將性能數據加上時間戳移到spool目錄中等待處理,npcd服務調用process_perfdata.pl腳本對數據進行處理。以下圖:

clip_p_w_picpath052

這種模式就是咱們如今使用最多的,也是咱們本次實驗要使用到的模式。

另外兩種模式在此就很少作介紹,若是想要了解pnp4nagios的所有工做模式,能夠訪問這個鏈接。以下:

http://docs.pnp4nagios.org/pnp-0.6/config

clip_p_w_picpath053

若是英文的看不懂,也能夠參考這篇文章《pnp4nagios工做模式詳解》。

6、啓動pnp4nagios

pnp4nagios安裝完畢後,咱們來啓動pnp4nagios。要啓動pnp4nagios,咱們可使用以下命令:

/etc/init.d/npcd start

ps aux |grep npcd

clip_p_w_picpath054

經過上圖,咱們能夠很明顯的看到pnp4nagios已經正常啓動,而且也能看出pnp4nagios運行在nagios用戶下。

爲了之後的方便,咱們直接把pnp4nagios開機啓動。以下:

chkconfig npcd on

chkconfig --list npcd

clip_p_w_picpath055

7、訪問pnp4nagios

pnp4nagios啓動後,如今咱們經過以下鏈接訪問pnp4nagios,以下:

http://192.168.1.247/pnp4nagios/

clip_p_w_picpath056

注意:系統會彈出如上的對話框,在此咱們只需填入nagios中配置的具備訪問權限的用戶便可,在此我填寫的是nagios的管理員帳號nagiosadmin。

clip_p_w_picpath057

clip_p_w_picpath058

經過上面兩幅圖,咱們能夠看很明顯的看到pnp4nagios能夠正常訪問。

可是在第二幅圖,咱們也看到了系統給出的提示。以下:

Your environment passed all requirements. Remove or rename the /usr/local/pnp4nagios/share/install.php file now.

它的意思是要把/usr/local/pnp4nagios/share/install.php文件刪除或者重命名。

如今咱們對此文件進行操做,以下:

mv /usr/local/pnp4nagios/share/install.php /usr/local/pnp4nagios/share/install.php.bak

ll /usr/local/pnp4nagios/share/

clip_p_w_picpath059

對該文件操做文件後,咱們再次刷新該頁面,可能會出現以下的錯誤信息。以下:

session_start(): open(/var/lib/php/session/sess_rv62qv22fno63rrtnq2l80hqf0, O_RDWR) failed: Permission denied (13)

clip_p_w_picpath060

提示這個錯誤的意思是,沒有權限對/var/lib/php/session目錄下的文件進行操做。

爲何會沒有權限進行操做呢?

咱們如今來查看/var/lib/php/session目錄權限,以下:

ll /var/lib/php/

clip_p_w_picpath061

經過上圖,咱們能夠很明顯的看出session目錄目前屬於root用戶、apache用戶組,而pnp4nagios使用的是nagios用戶運行,因此對此目錄沒有操做權限。

既然問題找到了,那就好解決了。把session目錄修改成nagios用戶及用戶組全部便可。以下:

chown nagios:nagios -R /var/lib/php/

ll /var/lib/php/

clip_p_w_picpath062

修改完畢後,咱們再來刷新該頁面。以下:

clip_p_w_picpath063

經過上圖,咱們能夠很明顯的看出pnp4nagios已經繪製出圖像。

8、配置nagios

在pnp4nagios的這幾種工做模式中,咱們使用Bulk Mode with NPCD模式。要使用Bulk Mode with NPCD模式,咱們須要修改nagios的相關配置,具體修改以下。

8.1 配置nagios.cfg文件

修改nagios的配置文件nagios.cfg,在該文件加入或修改以下選項:

vi /usr/local/nagios/etc/nagios.cfg

process_performance_data=1

#

# service performance data

#

service_perfdata_file=/usr/local/pnp4nagios/var/service-perfdata

service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tSERVICESTATE::$SERVICESTATE$\tSERVICESTATETYPE::$SERVICESTATETYPE$

service_perfdata_file_mode=a

service_perfdata_file_processing_interval=15

service_perfdata_file_processing_command=process-service-perfdata-file

#

# host performance data starting with Nagios 3.0

#

host_perfdata_file=/usr/local/pnp4nagios/var/host-perfdata

host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$

host_perfdata_file_mode=a

host_perfdata_file_processing_interval=15

host_perfdata_file_processing_command=process-host-perfdata-file

clip_p_w_picpath064

注意:

process_performance_data=1表示啓用nagios性能數據輸出。

若是上面的內容你記不得,也沒事的,咱們能夠直接從/usr/local/pnp4nagios/etc/nagios.cfg文件中複製便可。以下:

vi /usr/local/pnp4nagios/etc/nagios.cfg +16

clip_p_w_picpath065

8.2 配置commands.cfg文件

nagios.cfg文件修改完畢後,咱們如今來編輯commands.cfg文件。在該文件中加入或修改以下選項:

vi /usr/local/nagios/etc/objects/commands.cfg

define command{

    command_name    process-service-perfdata-file

    command_line    /bin/mv /usr/local/pnp4nagios/var/service-perfdata /usr/local/pnp4nagios/var/spool/service-perfdata.$TIMET$

}

define command{

  command_name    process-host-perfdata-file

  command_line    /bin/mv /usr/local/pnp4nagios/var/host-perfdata /usr/local/pnp4nagios/var/spool/host-perfdata.$TIMET$

}

clip_p_w_picpath066

同時還要把nagios中原來的定義process-host-perfdata和process-service-perfdata給註釋掉。以下:

clip_p_w_picpath067

若是上面的內容你記不得,也沒事的,咱們能夠直接從/usr/local/pnp4nagios/etc/misccommands.cfg文件中複製便可。以下:

vi /usr/local/pnp4nagios/etc/misccommands.cfg +34

clip_p_w_picpath068

8.3 配置templates.cfg文件

commands.cfg文件修改完畢後,咱們如今來編輯templates.cfg文件。在該文件中加入以下選項:

vi /usr/local/nagios/etc/objects/templates.cfg

define host {

name host-pnp

action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=_HOST_

register 0

}

define service {

name srv-pnp

action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=$SERVICEDESC$

register 0

}

clip_p_w_picpath069

若是上面的內容你記不得,也沒事的,咱們能夠直接從pnp4nagios官網查看。以下:

http://docs.pnp4nagios.org/pnp-0.6/webfe

clip_p_w_picpath070

8.4 配置主機cfg文件

以上文件所有配置完畢後,咱們如今添加一臺主機。以下:

vi /usr/local/nagios/etc/ilanni/ilanni.cfg

define host{

use ilanniserver,host-pnp

host_name ilanni

alias test server

address 192.168.1.248

check_command check-host-alive

}

define service{

use generic-service,srv-pnp

host_name ilanni

service_description nrpe_load

check_command check_nrpe!check_load

}

clip_p_w_picpath071

9、查看pnp4nagios繪製圖形

nagios配置完畢後,咱們來檢查下nagios配置是否正確。以下:

/etc/init.d/nagios configtest

clip_p_w_picpath072

經過上圖,咱們能夠看到nagios配置是沒有問題的。

如今咱們來從新啓動pnp4nagios和nagios,以下:

/etc/init.d/npcd restart

/etc/init.d/nagios reload

clip_p_w_picpath073

如今咱們登陸nagios進行查看,先來看看pnp4nagios繪製主機的性能圖,以下:

clip_p_w_picpath074

clip_p_w_picpath075

clip_p_w_picpath076

經過上面三張圖,咱們能夠很明顯的看出pnp4nagios已經把主機的相關數據進行繪圖。

而後再來看看pnp4nagios繪製服務的性能圖,以下:

clip_p_w_picpath077

clip_p_w_picpath078

clip_p_w_picpath079

經過上面三張圖,咱們能夠很明顯的看出pnp4nagios已經把服務的相關數據進行繪圖。

最後,咱們再來查看下pnp4nagios把數據存放的位置。以下:

ll /usr/local/pnp4nagios/var/perfdata/

ll /usr/local/pnp4nagios/var/perfdata/ilanni

clip_p_w_picpath080

到此有關pnp4nagios繪製nagios性能的圖形已經所有完成。

相關文章
相關標籤/搜索