zoukankan      html  css  js  c++  java
  • 烂泥:nagios学习(四):pnp4nagios图形化绘制nagios数据

    本文由秀依林枫提供友情赞助,首发于烂泥行天下

    在nagios安装完毕后,我们也添加了一些监控对象,但是你会发现nagios只是简单的给我们列出那些监控对象是正常的,而没有把这些监控对象的数据进行整合。如下:

    clip_image001

    其实nagios已经给我们提供了一个制图工具pnp4nagios,只是我们还没有安装而已。

    pnp4nagios是一个基于php和perl语言的强大工具,它可以通过process_perfdata.pl脚本调用rrdtool对nagios的性能数据进行分析并绘制成相应的性能图。所以在安装pnp4nagios之前,我们必须先安装php、perl、rrdtool。

    为了实验的方便,在此我们对php、perl使用yum方式进行安装。

    对于rrdtool的安装,见下面文章。

    注意:本篇文章,所有的操作都是在nagios服务器上进行的。

    一、什么是rrdtool

    rrdtool是Round Robin Database Tool的缩写。从功能上说,rrdtool可用于数据存储+数据展示。著名的网络流量绘图软件cacti和集群监控系统Ganglia使用的都是rrdtool。

    在数据存储方面,rrdtool采用“Round Robin”模式存储数据,即环状数据库。注意:rrdtool数据库文件后缀名为“.rrd”。

    有关rrdtool的详细介绍,可以参考百度百科。

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

    在数据展示方面,rrdtool可以看作是一个强大的绘图引擎。下图是其官网上的一张效果图,我们大致了解rrdtool的绘图能力。

    clip_image002

    介绍完毕rrdtool的功能后,我们现在来安装rrdtool。

    二、安装rrdtool

    rrdtool的安装,我们从源码方式和yum方式安装进行介绍。

    2.1 源码方式安装

    源码方式安装,我们分几个步骤。

    2.1.1 下载rrdtool软件包

    到rrdtool官网下载,最新的源码包。如下:

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

    clip_image003

    下载rrdtool:

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

    clip_image004

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

    clip_image005

    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_image006

    2.1.3 安装rrdtool

    基础库安装完毕后,我们现在开始正式安装rrdtool。

    解压rrdtool软件包,如下:

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

    cd rrdtool-1.5.0-rc2

    clip_image007

    配置rrdtool,如下:

    ./configure

    clip_image008

    clip_image009

    编译rrdtool,如下:

    make

    clip_image010

    clip_image011

    安装rrdtool,如下:

    make install

    clip_image012

    2.1.4 查看rrdtool安装路径

    rrdtool安装完毕后,我们现在来查看rrdtool的安装路径。如果没有特意指定rrdtool安装路径的话,rrdtool默认安装路径为/opt/rrdtool-1.5.0-rc2/。这个我们可以通过在安装配置rrdtool时可以知道,如下:

    ./configure --help

    clip_image013

    查看rrdtool安装的内容,如下:

    ll /opt/rrdtool-1.5.0-rc2/

    clip_image014

    2.1.5 验证rrdtool

    rrdtool安装完毕后,我们来验证是否正确安装。我们使用如下命令:

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

    clip_image015

    通过上图,我们可以很明显的看到rrdtool的用法以及版本信息。这也就说明了rrdtool已经被正确的安装。

    2.2 yum方式安装

    rrdtool的yum方式安装就比较简单了,直接使用如下命令进行安装。

    yum -y install rrdtool rrdtool-perl

    clip_image016

    rrdtool安装完毕后,我们来查看其安装的位置,如下:

    which rrdtool

    rpm -ql rrdtool

    clip_image017

    通过上图,我们可以很明显的看到rrdtool的yum方式安装,把rrdtool安装到/usr/bin目录下。

    rpm -ql rrdtool-perl

    clip_image018

    注意:

    /usr/lib64/perl5/vendor_perl/auto/RRDs是rrds perl模块的路径,这个我们在安装配置pnp4nagios时会使用到。

    三、安装pnp4nagios

    在前文,我们已经介绍了有关pnp4nagios的功能。

    pnp4nagios是一个基于php和perl语言的强大工具,它可以通过process_perfdata.pl脚本调用rrdtool对nagios的性能数据进行分析并绘制成相应的性能图。

    pnp4nagios的安装,我们也可以分为源码方式和yum方式安装,下面一一进行介绍。

    3.1 下载pnp4nagios软件包

    要源码方式安装pnp4nagios,我们需要下载pnp4nagios软件包,这个我们可以去其官网进行下载。如下:

    http://docs.pnp4nagios.org

    clip_image019

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

    clip_image020

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

    clip_image021

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

    clip_image022

    3.2 安装perl-Time-HiRes组件

    perl-Time-HiRes组件一定要在安装配置pnp4nagios之前安装,否则在安装配置pnp4nagios时,提示如下的错误信息:

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

    clip_image023

    使用如下命令进行安装perl-Time-HiRes扩展组件,如下:

    yum -y install perl-Time-HiRes

    clip_image024

    3.3 源码安装pnp4nagios

    解压pnp4nagios软件包,如下:

    tar -xf pnp4nagios-0.6.25.tar.gz

    cd pnp4nagios-0.6.25

    clip_image025

    配置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_image026

    注意:

    --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_image027

    如果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_image018[1]

    pnp4nagios配置没有问题的话,会显示以下的界面:

    clip_image028

    编译pnp4nagios,如下:

    make all

    clip_image029

    注意:

    通过上图,我们知道pnp4nagios的最后一步的安装有两种方法:一是make install进行一步一步的安装pnp4nagios,二是使用make fullinstall进行自动安装。

    为了能更进一步学习pnp4nagios的安装,在此我们使用的是make install。如下:

    make install

    clip_image030

    clip_image031

    注意:pnp4nagios默认的安装路径是/usr/local/pnp4nagios/,这个我们可以通过配置帮助信息得到。如下:

    ./configure --help

    clip_image032

    安装pnp4nagios的web配置文件,如下:

    make install-webconf

    clip_image033

    注意:如果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_image034

    安装pnp4nagios启动的初始化脚本,如下:

    make install-init

    clip_image035

    3.4 pnp4nagios目录介绍

    pnp4nagios安装完毕后,我们来查看下其安装的目录,如下:

    ll /usr/local/pnp4nagios/

    clip_image036

    下面来介绍下pnp4nagios的目录,如下:

    bin目录用来存放pnp4nagios启动命令npcd。如下:

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

    clip_image037

    pnp4nagios开机启动脚本就是由这个命令控制,如下:

    vi /etc/init.d/npcd

    clip_image038

    etc目录主要存放pnp4nagios各种配置文件,如下:

    ll /usr/local/pnp4nagios/etc/

    clip_image039

    lib目录存放pnp4nagios的库文件。

    libexec目录存放pnp4nagios执行的插件,比如process_perfdata.pl。

    clip_image040

    其他的目录就不需要做介绍了。

    3.5 yum安装pnp4nagios

    通过yum方式安装pnp4nagios,我们需要配置额外的yum源。如下:

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

    clip_image041

    下载并安装额外的yum源软件包。如下:

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

    clip_image042

    查看额外yum源安装的文件,如下:

    rpm -ql epel-release

    clip_image043

    通过上图可以很明显的看出,安装额外yum源就是安装repo文件。有关repo文件的使用,可以参考这篇文章《烂泥:yum的使用及配置》。

    安装pnp4nagios,如下:

    yum -y install pnp4nagios

    clip_image044

    clip_image045

    注意:

    yum安装pnp4nagios时,是会安装nagios。所以,如果我们的nagios是源码安装的话,建议pnp4nagios也使用源码安装。如果nagios是yum方式安装的话,pnp4nagios也使用yum方式安装。

    四、配置pnp4nagios

    pnp4nagios安装完毕后,我们现在来配置pnp4nagios。

    切换到pnp4nagios的安装目录的etc目录下,如下:

    cd /usr/local/pnp4nagios/etc/

    clip_image046

    现在开始修改etc目录下内容,如下:

    mv misccommands.cfg-sample misccommands.cfg

    mv nagios.cfg-sample nagios.cfg

    mv rra.cfg-sample rra.cfg

    clip_image047

    修改etc/pages目录下内容,如下:

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

    clip_image048

    修改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_image049

    以上修改完毕后,我们来配置pnp4nagios的工作模式。

    五、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_image050

    5.2 Bulk Mode模式

    Bulk Mode(Bulk模式)相对同步式复杂一点,由于同步模式是对每个event都进行处理,如果主机和服务数大就会造成监控服务器的性能下降。

    在Bulk模式中,nagios会将性能数据以特定的格式写到一个临时目录中。pnp4nagios则定期调用process_perfdata.pl进行处理,处理完成后删除数据文件。这种方式减小了处理的次数,同时也减少了nagios主机的IO访问及负载,弥补了同步模式中的不足。如下图:

    clip_image051

    5.3 Bulk Mode with NPCD模式

    Bulk Mode with NPCD模式,从名字上可以看出,这种模式和Bulk模式差不多,只是多了一步将性能数据加上时间戳移到spool目录中等待处理,npcd服务调用process_perfdata.pl脚本对数据进行处理。如下图:

    clip_image052

    这种模式就是我们现在使用最多的,也是我们本次实验要使用到的模式。

    另外两种模式在此就不多做介绍,如果想要了解pnp4nagios的全部工作模式,可以访问这个连接。如下:

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

    clip_image053

    如果英文的看不懂,也可以参考这篇文章《pnp4nagios工作模式详解》。

    六、启动pnp4nagios

    pnp4nagios安装完毕后,我们来启动pnp4nagios。要启动pnp4nagios,我们可以使用如下命令:

    /etc/init.d/npcd start

    ps aux |grep npcd

    clip_image054

    通过上图,我们可以很明显的看到pnp4nagios已经正常启动,并且也能看出pnp4nagios运行在nagios用户下。

    为了以后的方便,我们直接把pnp4nagios开机启动。如下:

    chkconfig npcd on

    chkconfig --list npcd

    clip_image055

    七、访问pnp4nagios

    pnp4nagios启动后,现在我们通过如下连接访问pnp4nagios,如下:

    http://192.168.1.247/pnp4nagios/

    clip_image056

    注意:系统会弹出如上的对话框,在此我们只需填入nagios中配置的具有访问权限的用户即可,在此我填写的是nagios的管理员账号nagiosadmin。

    clip_image057

    clip_image058

    通过上面两幅图,我们可以看很明显的看到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_image059

    对该文件操作文件后,我们再次刷新该页面,可能会出现如下的错误信息。如下:

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

    clip_image060

    提示这个错误的意思是,没有权限对/var/lib/php/session目录下的文件进行操作。

    为什么会没有权限进行操作呢?

    我们现在来查看/var/lib/php/session目录权限,如下:

    ll /var/lib/php/

    clip_image061

    通过上图,我们可以很明显的看出session目录目前属于root用户、apache用户组,而pnp4nagios使用的是nagios用户运行,所以对此目录没有操作权限。

    既然问题找到了,那就好解决了。把session目录修改为nagios用户及用户组所有即可。如下:

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

    ll /var/lib/php/

    clip_image062

    修改完毕后,我们再来刷新该页面。如下:

    clip_image063

    通过上图,我们可以很明显的看出pnp4nagios已经绘制出图像。

    八、配置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 TIMET::$TIMET$ HOSTNAME::$HOSTNAME$ SERVICEDESC::$SERVICEDESC$ SERVICEPERFDATA::$SERVICEPERFDATA$ SERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$ HOSTSTATE::$HOSTSTATE$ HOSTSTATETYPE::$HOSTSTATETYPE$ SERVICESTATE::$SERVICESTATE$ SERVICESTATETYPE::$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 TIMET::$TIMET$ HOSTNAME::$HOSTNAME$ HOSTPERFDATA::$HOSTPERFDATA$ HOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$ HOSTSTATE::$HOSTSTATE$ HOSTSTATETYPE::$HOSTSTATETYPE$

    host_perfdata_file_mode=a

    host_perfdata_file_processing_interval=15

    host_perfdata_file_processing_command=process-host-perfdata-file

    clip_image064

    注意:

    process_performance_data=1表示启用nagios性能数据输出。

    如果上面的内容你记不得,也没事的,我们可以直接从/usr/local/pnp4nagios/etc/nagios.cfg文件中复制即可。如下:

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

    clip_image065

    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_image066

    同时还要把nagios中原来的定义process-host-perfdata和process-service-perfdata给注释掉。如下:

    clip_image067

    如果上面的内容你记不得,也没事的,我们可以直接从/usr/local/pnp4nagios/etc/misccommands.cfg文件中复制即可。如下:

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

    clip_image068

    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_image069

    如果上面的内容你记不得,也没事的,我们可以直接从pnp4nagios官网查看。如下:

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

    clip_image070

    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_image071

    九、查看pnp4nagios绘制图形

    nagios配置完毕后,我们来检查下nagios配置是否正确。如下:

    /etc/init.d/nagios configtest

    clip_image072

    通过上图,我们可以看到nagios配置是没有问题的。

    现在我们来重新启动pnp4nagios和nagios,如下:

    /etc/init.d/npcd restart

    /etc/init.d/nagios reload

    clip_image073

    现在我们登录nagios进行查看,先来看看pnp4nagios绘制主机的性能图,如下:

    clip_image074

    clip_image075

    clip_image076

    通过上面三张图,我们可以很明显的看出pnp4nagios已经把主机的相关数据进行绘图。

    然后再来看看pnp4nagios绘制服务的性能图,如下:

    clip_image077

    clip_image078

    clip_image079

    通过上面三张图,我们可以很明显的看出pnp4nagios已经把服务的相关数据进行绘图。

    最后,我们再来查看下pnp4nagios把数据存放的位置。如下:

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

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

    clip_image080

    到此有关pnp4nagios绘制nagios性能的图形已经全部完成。

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法提高 交换Easy
    Java实现 蓝桥杯VIP 算法提高 多项式输出
    Java实现 蓝桥杯VIP 算法提高 多项式输出
    Java实现 蓝桥杯VIP 算法提高 多项式输出
    Java实现 蓝桥杯VIP 算法提高 多项式输出
    Java实现 蓝桥杯VIP 算法提高 多项式输出
    Java实现 蓝桥杯VIP 算法训练 矩阵乘方
    QT中给各控件增加背景图片(可缩放可旋转)的几种方法
    回调函数实现类似QT中信号机制
    std::string的Copy-on-Write:不如想象中美好(VC不使用这种方式,而使用对小字符串更友好的SSO实现)
  • 原文地址:https://www.cnblogs.com/ilanni/p/4380760.html
Copyright © 2011-2022 走看看