Nagios图像绘制插件PNP4Nagios部署和测试

1. 概述

2. 关于PNP4Nagios

3. 部署PNP4Nagios

3.1 下载PNP4Nagios

3.2 编译安装

3.3 目录文件说明

4. 配置Nagios

4.1 配置说明

4.2 配置Nagios主配置文件

4.3 配置Nagios对象模板command.cfg文件

4.4 配置Nagios对象模板template.cfg文件

4.5 配置主机和服务监控

5. 测试

6.总结

1. 概述

本篇博客主要介绍在Nagios3.5和Nagios4.4系统中部署pnp4nagios0.4和pnp4nagios0.6。
Nagios展示的实时数据,无历史数据存储和展示功能。通过pnp4nagios来实现Nagios历史数据的绘制。

2. 关于PNP4Nagios

PNP4Nagios目前有两个主要版本0.6版本和0.4版本。

3. 部署PNP4Nagios

3.1 下载PNP4Nagios

官方网站:https://docs.pnp4nagios.org/
注意官方网站的提示,PNP4Nagios的Broker Module模式无法应用在Nagios Core 4.x上
技术分享图片

3.2 编译安装

执行命令解压:tar -zxvf tar -zxvf nagiosgraph-1.5.2.tar.gz -C /tmp/
进入目录进行configure:cd /tmp/pnp4nagios-0.6.26
执行命令:

./configure --prefix=/usr/local/globle/softs/monitor/nagios/pnp4nagios/0.6.26 --sysconfdir=/usr/local/globle/softs/monitor/nagios/pnp4nagios/0.6.26/etc --localstatedir=/usr/local/globle/softs/monitor/nagios/pnp4nagios/0.6.26/var --with-nagios-user=nagios --with-nagios-group=nagios --with-perl_lib_path=/usr/local/globle/softs/rrdtool/1.7.0/lib/perl --with-rrdtool=/usr/local/globle/softs/rrdtool/1.7.0/bin/rrdtool --with-perfdata-logfile=/usr/local/globle/softs/monitor/nagios/pnp4nagios/0.6.26/process_perfdata --with-perfdata-dir=/usr/local/globle/softs/monitor/nagios/pnp4nagios/0.6.26/var --with-perfdata-spool-dir=/usr/local/globle/softs/monitor/nagios/pnp4nagios/0.6.26/var --with-httpd-conf=/usr/local/globle/softs/monitor/nagios/pnp4nagios/0.6.26/etc --with-base-url=/pnp4nagios --with-init-dir=/usr/local/globle/softs/monitor/nagios/pnp4nagios/0.6.26/etc/init.d --with-debug \

执行命令make all
执行命令make fullinstall
至此,已经完成了PNP4Nagios的编译和安装。

3.3 目录文件说明

在路径/usr/local/globle/softs/monitor/nagios/pnp4nagios/0.6.26下,能够看到以下目录:
bin,etc,lib,libexec,man,share,var
bin目录存放npcd可执行文件
lib目录存放npcdmod.o模块文件
libexec目录存放process_perfdata.pl等perl脚本
etc比较重要,存放了配置PNP4Nagios的配置文件,包括:
process_perfdata.cfg,npcd.cfg,nagios.cfg,misccommands.cfg,rra.cfg
以及编译时指定的init.d启动脚本目录

注:上过的.cfg文件,实际是以.cfg-sample存在,配置时拷贝一份或者重命名即可

4. 配置Nagios

4.1 配置说明

PNP4Nagios有四种运行模式:

  • Synchronous mode
  • Bulk mode
  • Bulk with NPCD mode
  • Module mode

这四种模式的配置,在配置文件nagios.cfg和missconmmands.cfg中都有提到。
实际上nagios.cfg和miscommands.cfg就是源码提供的不同模式下对Nagios整合PNP4Nagios配置的示例。
nagios.cfg的内容,为在四种模式时,对Nagios主配置文件nagios.cfg的修改示例;而miscommands.cfg的内容,为在四种不同模式下,
对Nagios的command模板的修改示例;

4.2 配置Nagios主配置文件

本篇博客主要配置的是PNP4Nagios的第三种模式,即Bulk with NPCD mode。
这要求PNP4Nagios能够以独立进程npcd运行,并且能够处理Nagios抛出的临时状态文件。
修改Nagiso的主配置文件,内容如下:

#打开性能文件输出
process_performance_data=1
#定义用于输出的命令对象
host_perfdata_command=process-host-perfdata
service_perfdata_command=process-service-perfdata
#定义存放性能数据的文件
host_perfdata_file=/usr/local/globle/softs/monitor/nagios/pnp4nagios/0.6.26/var/host-perfdata
service_perfdata_file=/usr/local/globle/softs/monitor/nagios/pnp4nagios/0.6.26/var/service-perfdata
#定义存放性能数据的模板
host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$
service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tSERVICESTATE::$SERVICESTATE$\tSERVICESTATETYPE::$SERVICESTATETYPE$
#定义存放性能数据的模式
host_perfdata_file_mode=a
service_perfdata_file_mode=a
#定义输出性能数据的时间
host_perfdata_file_processing_interval=15
service_perfdata_file_processing_interval=15
#定义处理性能数据的命令对象
host_perfdata_file_processing_command=process-host-perfdata-file
service_perfdata_file_processing_command=process-service-perfdata-file

4.3 配置Nagios对象模板command.cfg文件

上面对Nagios的主配置文件修改过程种,配置了处理性能文件的命令对象host_perfdata_file_processing_command和service_perfdata_file_processing_command,
这两个命令,需要在Nagios的命令模板种定义方可使用。
修改配置文件:vim /usr/local/globle/softs/monitor/nagios/3.5.1/etc/objects

#这段命令的定义,可以参照示例配置文件/usr/local/globle/softs/monitor/nagios/pnp4nagios/0.6.26/etc/misccommands.cfg
#或者官方文档地址:
define command {
       command_name process-service-perfdata-file
       command_line /bin/mv /usr/local/globle/softs/monitor/nagios/pnp4nagios/0.6.26/var/service-perfdata /usr/local/globle/softs/monitor/nagios/pnp4nagios/0.6.26/var/service-perfdata.$TIMET$
}

define command {
       command_name process-host-perfdata-file
       command_line /bin/mv /usr/local/globle/softs/monitor/nagios/pnp4nagios/0.6.26/var/host-perfdata /usr/local/globle/softs/monitor/nagios/pnp4nagios/0.6.26/var/host-perfdata.$TIMET$
}

4.4 配置Nagios对象模板template.cfg文件

因为需要在Nagios的web站点展示性能数据图,因此需要定义一个主机和服务模板,将模板添加到主机监控即可
修改配置文件:/usr/local/globle/softs/monitor/nagios/3.5.1/etc/objects/templates.cfg

#这段配置可以参考官方文档地址:http://docs.pnp4nagios.org/pnp-0.6/webfe
define host {
   name hosts-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 services-pnp
   action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$‘ class=‘tips‘ rel=‘/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=$SERVICEDESC$
   register 0
}

4.5 配置主机和服务监控

上面的配置完成之后,在需要配置性能数据输出的对象配置上,进行配置。如本篇博客配置

define host {
    use linux-server,hosts-pnp
    host_name node11
    alias node11
    address 192.168.80.11
}
define service {
    use local-service,services-pnp ; Name of service template to use
    host_name node11
    service_description Root Partition
    check_command check_nrpe!check_disk
    notifications_enabled 1
}
define service {
    use local-service,services-pnp ; Name of service template to use
    host_name node11
    service_description Current Users
    check_command check_nrpe!check_users
    notifications_enabled 1
}
define service {
    use local-service,services-pnp ; Name of service template to use
    host_name node11
    service_description Total Processes
    check_command check_nrpe!check_total_procs
    notifications_enabled 1
}

5. 测试

重启Nagios便可在监控站点上看到node11的性能监控数据。

6.总结

PNP4Nagios可以理解为PNP for Nagios,即为Naigos监控对象配置性能数据可视化。
该插件弥补了Nagios实时监控的短板,能够给监控着对于监控对象性能以很直观的认知。