设为首页 收藏本站
查看: 759|回复: 0

烂泥:nagios学习(四):pnp4nagios图形化绘制nagios数据

[复制链接]
发表于 2019-1-13 12:22:17 | 显示全部楼层 |阅读模式
本文首发于烂泥行天下

  在nagios安装完毕后,我们也添加了一些监控对象,但是你会发现nagios只是简单的给我们列出那些监控对象是正常的,而没有把这些监控对象的数据进行整合。如下:
  
  其实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的绘图能力。
  
  介绍完毕rrdtool的功能后,我们现在来安装rrdtool。
  二、安装rrdtool
  rrdtool的安装,我们从源码方式和yum方式安装进行介绍。
  2.1 源码方式安装
  源码方式安装,我们分几个步骤。
  2.1.1 下载rrdtool软件包
  到rrdtool官网下载,最新的源码包。如下:
  http://oss.oetiker.ch/rrdtool/
  
  下载rrdtool:
  http://oss.oetiker.ch/rrdtool/pub/?M=D
  
  wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.5.0-rc2.tar.gz
  
  2.1.2 安装基础库
  在正式安装rrdtool之前,我们还必须要安装rrdtool编译时,所需要的基础库。如下:
  yum -y install gcc cairo-devel libxml2-devel pango-devel pango libpng-devel freetype freetype-devel libart_lgpl-devel
  
  2.1.3 安装rrdtool
  基础库安装完毕后,我们现在开始正式安装rrdtool。
  解压rrdtool软件包,如下:
  tar -xf rrdtool-1.5.0-rc2.tar.gz
  cd rrdtool-1.5.0-rc2
  
  配置rrdtool,如下:
  ./configure
  
  
  编译rrdtool,如下:
  make
  
  
  安装rrdtool,如下:
  make install
  
  2.1.4 查看rrdtool安装路径
  rrdtool安装完毕后,我们现在来查看rrdtool的安装路径。如果没有特意指定rrdtool安装路径的话,rrdtool默认安装路径为/opt/rrdtool-1.5.0-rc2/。这个我们可以通过在安装配置rrdtool时可以知道,如下:
  ./configure --help
  
  查看rrdtool安装的内容,如下:
  ll /opt/rrdtool-1.5.0-rc2/
  
  2.1.5 验证rrdtool
  rrdtool安装完毕后,我们来验证是否正确安装。我们使用如下命令:
  /opt/rrdtool-1.5.0-rc2/bin/rrdtool -v
  
  通过上图,我们可以很明显的看到rrdtool的用法以及版本信息。这也就说明了rrdtool已经被正确的安装。
  2.2 yum方式安装
  rrdtool的yum方式安装就比较简单了,直接使用如下命令进行安装。
  yum -y install rrdtool rrdtool-perl
  
  rrdtool安装完毕后,我们来查看其安装的位置,如下:
  which rrdtool
  rpm -ql rrdtool
  
  通过上图,我们可以很明显的看到rrdtool的yum方式安装,把rrdtool安装到/usr/bin目录下。
  rpm -ql rrdtool-perl
  
  注意:
  /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
  
  http://docs.pnp4nagios.org/pnp-0.6/start
  
  http://sourceforge.net/projects/pnp4nagios/
  
  wget http://jaist.dl.sourceforge.net/project/pnp4nagios/PNP-0.6/pnp4nagios-0.6.25.tar.gz
  
  3.2 安装perl-Time-HiRes组件
  perl-Time-HiRes组件一定要在安装配置pnp4nagios之前安装,否则在安装配置pnp4nagios时,提示如下的错误信息:
  configure: error: Perl Module Time::HiRes not available
  
  使用如下命令进行安装perl-Time-HiRes扩展组件,如下:
  yum -y install perl-Time-HiRes
  
  3.3 源码安装pnp4nagios
  解压pnp4nagios软件包,如下:
  tar -xf pnp4nagios-0.6.25.tar.gz
  cd pnp4nagios-0.6.25
  
  配置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
  
  注意:
  --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 ***
  
  如果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路径下。如下:
  
  pnp4nagios配置没有问题的话,会显示以下的界面:
  
  编译pnp4nagios,如下:
  make all
  
  注意:
  通过上图,我们知道pnp4nagios的最后一步的安装有两种方法:一是make install进行一步一步的安装pnp4nagios,二是使用make fullinstall进行自动安装。
  为了能更进一步学习pnp4nagios的安装,在此我们使用的是make install。如下:
  make install
  
  
  注意:pnp4nagios默认的安装路径是/usr/local/pnp4nagios/,这个我们可以通过配置帮助信息得到。如下:
  ./configure --help
  
  安装pnp4nagios的web配置文件,如下:
  make install-webconf
  
  注意:如果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
  
  安装pnp4nagios启动的初始化脚本,如下:
  make install-init
  
  3.4 pnp4nagios目录介绍
  pnp4nagios安装完毕后,我们来查看下其安装的目录,如下:
  ll /usr/local/pnp4nagios/
  
  下面来介绍下pnp4nagios的目录,如下:
  bin目录用来存放pnp4nagios启动命令npcd。如下:
  /usr/local/pnp4nagios/bin/npcd -h
  
  pnp4nagios开机启动脚本就是由这个命令控制,如下:
  vi /etc/init.d/npcd
  
  etc目录主要存放pnp4nagios各种配置文件,如下:
  ll /usr/local/pnp4nagios/etc/
  
  lib目录存放pnp4nagios的库文件。
  libexec目录存放pnp4nagios执行的插件,比如process_perfdata.pl。
  
  其他的目录就不需要做介绍了。
  3.5 yum安装pnp4nagios
  通过yum方式安装pnp4nagios,我们需要配置额外的yum源。如下:
  http://dl.fedoraproject.org/pub/epel/6/x86_64/
  
  下载并安装额外的yum源软件包。如下:
  rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
  
  查看额外yum源安装的文件,如下:
  rpm -ql epel-release
  
  通过上图可以很明显的看出,安装额外yum源就是安装repo文件。有关repo文件的使用,可以参考这篇文章《烂泥:yum的使用及配置》。
  安装pnp4nagios,如下:
  yum -y install pnp4nagios
  
  
  注意:
  yum安装pnp4nagios时,是会安装nagios。所以,如果我们的nagios是源码安装的话,建议pnp4nagios也使用源码安装。如果nagios是yum方式安装的话,pnp4nagios也使用yum方式安装。
  四、配置pnp4nagios
  pnp4nagios安装完毕后,我们现在来配置pnp4nagios。
  切换到pnp4nagios的安装目录的etc目录下,如下:
  cd /usr/local/pnp4nagios/etc/
  
  现在开始修改etc目录下内容,如下:
  mv misccommands.cfg-sample misccommands.cfg
  mv nagios.cfg-sample nagios.cfg
  mv rra.cfg-sample rra.cfg
  
  修改etc/pages目录下内容,如下:
  mv pages/web_traffic.cfg-sample pages/web_traffic.cfg
  
  修改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
  
  以上修改完毕后,我们来配置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都执行一次调用。如下图:
  
  5.2 Bulk Mode模式
  Bulk Mode(Bulk模式)相对同步式复杂一点,由于同步模式是对每个event都进行处理,如果主机和服务数大就会造成监控服务器的性能下降。
  在Bulk模式中,nagios会将性能数据以特定的格式写到一个临时目录中。pnp4nagios则定期调用process_perfdata.pl进行处理,处理完成后删除数据文件。这种方式减小了处理的次数,同时也减少了nagios主机的IO访问及负载,弥补了同步模式中的不足。如下图:
  
  5.3 Bulk Mode with NPCD模式
  Bulk Mode with NPCD模式,从名字上可以看出,这种模式和Bulk模式差不多,只是多了一步将性能数据加上时间戳移到spool目录中等待处理,npcd服务调用process_perfdata.pl脚本对数据进行处理。如下图:
  
  这种模式就是我们现在使用最多的,也是我们本次实验要使用到的模式。
  另外两种模式在此就不多做介绍,如果想要了解pnp4nagios的全部工作模式,可以访问这个连接。如下:
  http://docs.pnp4nagios.org/pnp-0.6/config
  
  如果英文的看不懂,也可以参考这篇文章《pnp4nagios工作模式详解》。
  六、启动pnp4nagios
  pnp4nagios安装完毕后,我们来启动pnp4nagios。要启动pnp4nagios,我们可以使用如下命令:
  /etc/init.d/npcd start
  ps aux |grep npcd
  
  通过上图,我们可以很明显的看到pnp4nagios已经正常启动,并且也能看出pnp4nagios运行在nagios用户下。
  为了以后的方便,我们直接把pnp4nagios开机启动。如下:
  chkconfig npcd on
  chkconfig --list npcd
  
  七、访问pnp4nagios
  pnp4nagios启动后,现在我们通过如下连接访问pnp4nagios,如下:
  http://192.168.1.247/pnp4nagios/
  
  注意:系统会弹出如上的对话框,在此我们只需填入nagios中配置的具有访问权限的用户即可,在此我填写的是nagios的管理员账号nagiosadmin。
  
  
  通过上面两幅图,我们可以看很明显的看到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/
  
  对该文件操作文件后,我们再次刷新该页面,可能会出现如下的错误信息。如下:
  session_start(): open(/var/lib/php/session/sess_rv62qv22fno63rrtnq2l80hqf0, O_RDWR) failed: Permission denied (13)
  
  提示这个错误的意思是,没有权限对/var/lib/php/session目录下的文件进行操作。
  为什么会没有权限进行操作呢?
  我们现在来查看/var/lib/php/session目录权限,如下:
  ll /var/lib/php/
  
  通过上图,我们可以很明显的看出session目录目前属于root用户、apache用户组,而pnp4nagios使用的是nagios用户运行,所以对此目录没有操作权限。
  既然问题找到了,那就好解决了。把session目录修改为nagios用户及用户组所有即可。如下:
  chown nagios:nagios -R /var/lib/php/
  ll /var/lib/php/
  
  修改完毕后,我们再来刷新该页面。如下:
  
  通过上图,我们可以很明显的看出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\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
  
  注意:
  process_performance_data=1表示启用nagios性能数据输出。
  如果上面的内容你记不得,也没事的,我们可以直接从/usr/local/pnp4nagios/etc/nagios.cfg文件中复制即可。如下:
  vi /usr/local/pnp4nagios/etc/nagios.cfg +16
  
  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$
  }
  
  同时还要把nagios中原来的定义process-host-perfdata和process-service-perfdata给注释掉。如下:
  
  如果上面的内容你记不得,也没事的,我们可以直接从/usr/local/pnp4nagios/etc/misccommands.cfg文件中复制即可。如下:
  vi /usr/local/pnp4nagios/etc/misccommands.cfg +34
  
  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
  }
  
  如果上面的内容你记不得,也没事的,我们可以直接从pnp4nagios官网查看。如下:
  http://docs.pnp4nagios.org/pnp-0.6/webfe
  
  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
  }
  
  九、查看pnp4nagios绘制图形
  nagios配置完毕后,我们来检查下nagios配置是否正确。如下:
  /etc/init.d/nagios configtest
  
  通过上图,我们可以看到nagios配置是没有问题的。
  现在我们来重新启动pnp4nagios和nagios,如下:
  /etc/init.d/npcd restart
  /etc/init.d/nagios reload
  
  现在我们登录nagios进行查看,先来看看pnp4nagios绘制主机的性能图,如下:
  
  
  
  通过上面三张图,我们可以很明显的看出pnp4nagios已经把主机的相关数据进行绘图。
  然后再来看看pnp4nagios绘制服务的性能图,如下:
  
  
  
  通过上面三张图,我们可以很明显的看出pnp4nagios已经把服务的相关数据进行绘图。
  最后,我们再来查看下pnp4nagios把数据存放的位置。如下:
  ll /usr/local/pnp4nagios/var/perfdata/
  ll /usr/local/pnp4nagios/var/perfdata/ilanni
  
  到此有关pnp4nagios绘制nagios性能的图形已经全部完成。
  




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-662735-1-1.html 上篇帖子: 烂泥:学习Nagios(三): NRPE安装及配置 下篇帖子: 监控软件nagios之安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表