烂泥: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性能的图形已经所有完成。

相关文章
相关标签/搜索