Nagios 对服务或主机监控的是一个瞬时状态,有时候系统管理员需要了解主机在一段时间内的性能及服务的响应状态,并且形成图表,这就需要通过查看日志数据来分析。但是这种方式不仅烦琐,而且抽象。为了能更直观的查看主机运行状态,这里采用 PNP 来实现此功能。PNP 是一个小巧的开源软件包,它是基于 PHP 和 Perl 脚本编写,PNP 可以利用 rrdtoul 工具将 Nagios 采集的数据绘制成图表,然后显示主机或者服务在一段时间内运行的状况。以下详细介绍 PNP 安装配置流程:
rrdtool下载地址:http://pkgs.fedoraproject.org/repo/pkgs/rrdtool/
1、安装 RRDtool 工具
[root@localhost src]# yum -y install gcc cairo-devel libxml2-devel pango-devel pango libpng-devel freetype freetype-devel libart_lgpl-devel //安装rrdtool编译时,所需要的基础库。 [root@localhost src]# tar zxf rrdtool-1.5.4.tar.gz [root@localhost src]# cd rrdtool-1.5.4 [root@localhost rrdtool-1.5.4]# ./configure --prefix=/usr/local/rrdtool [root@localhost rrdtool-1.5.4]#make [root@localhost rrdtool-1.5.4]#make install
make编译时报错:
BEGIN failed--compilation aborted at Makefile.PL line 1.
make[2]: *** [perl-piped] 错误 2
make[2]: Leaving directory `/usr/local/src/rrdtool-1.5.4/bindings'
make[1]: *** [all-recursive] 错误 1
make[1]: Leaving directory `/usr/local/src/rrdtool-1.5.4/bindings'
make: *** [all-recursive] 错误 1
解决办法:yum -y install perl-ExtUtils-MakeMaker
二、安装pnp
pnp4nagios下载地址:http://nbtelecom.dl.sourceforge.net/project/pnp4nagios/PNP-0.6/pnp4nagios-0.6.25.tar.gz
报错记录:
1、perl-Time-HiRes组件一定要在安装配置pnp4nagios之前安装,否则在安装配置pnp4nagios时,提示如下的错误信息:
configure: error: Perl Module Time::HiRes not available
使用如下命令进行安装perl-Time-HiRes扩展组件:yum -y install perl-Time-HiRes
2、WARNING: The RRDs Perl Modules are not found on your system
Using RRDs will speedup things in larger installations.
错误的原因是没有找到RRD perl模块
解决办法: configure时使用--with-perl_lib_path选项
[root@localhost src]# tar zxf pnp4nagios-0.6.25.tar.gz [root@localhost src]# cd pnp4nagios-0.6.25 [root@localhost pnp4nagios-0.6.25]# ./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-rrdtool=/usr/local/rrdtool/bin/rrdtool --with-perfdata-dir=/usr/local/nagios/share/perfdata --with-perl_lib_path=/usr/lib64/perl5/5.10.0/x86_64-linux-thread-multi
配置说明:
--with-rrdtool //指定rrdtool路径(根据编译时指定而来)
--with-perfdata-dir //指定生成的数据文件存放目录
--with-perl_lib_path //指定RRD perl模块路径
[root@localhost pnp4nagios-0.6.25]# make all
pnp4nagios的最后一步的安装有两种方法:
一是make install进行一步一步的安装pnp4nagios,
二是使用make fullinstall进行自动安装。
make install make install-webconf make install-config make install-init
PNP 配置文件定义
在 PNP 安装完成后, 默认安装目录下回自带相应的模板配置文件, 因此只需要参考相应的模板文件进行修改即可。
下
# cd /usr/local/pnp4nagios/etc/ 修改etc目录下内容: # cp -p misccommands.cfg-sample misccommands.cfg # cp -p nagios.cfg-sample nagios.cfg # cp -p rra.cfg-sample rra.cfg 修改etc/pages目录下内容: # cp -p pages/web_traffic.cfg-sample pages/web_traffic.cfg 修改etc/check_commands目录下内容: # cp -p check_commands/check_all_local_disks.cfg-sample check_commands/check_all_local_disks.cfg # cp -p check_commands/check_nrpe.cfg-sample check_commands/check_nrpe.cfg # cp -p check_commands/check_nwstat.cfg-sample check_commands/check_nwstat.cfg
修改process_perfdata.cfg文件 vim/usr/local/pnp4nagios/etc/process_perfdata.cfg LOG_LEVEL = 2 //开启日志的调试功能
3. 重启服务
/etc/init.d/npcd restart chkconfig npcd on chkconfig --list npcd
##################################top ########################
pnp4nagios工作模式
pnp4nagios有5种工作模式,它们分别是Synchronous Mode、Bulk Mode、Bulk Mode with NPCD、Bulk Mode with NPCD and npcdmod和Gearman Mode。
Synchronous Mode(同步模式):是最简单的一种集成方式,它的工作原理是直接将process_perfdata.pl脚本集成到nagios中,并且每个event都执行一次调用。
配置参考:
编辑nagios.cfg,更改或增加如下选项
process_performance_data=1 #使nagios性能数据输出 enable_environment_macros=1 #启用nagios环境变量输出 service_perfdata_command=process-service-perfdata #服务性能数据输出命令名 host_perfdata_command=process-host-perfdata #主机性能数据输出命令名
编辑commands.cfg,增加或修改如下选项 define command { command_name process-service-perfdata command_line /usr/bin/perl /usr/local/pnp4nagios/libexec/process_perfdata.pl }
#定义主机性能数据输出命令 define command { command_name process-host-perfdata command_line /usr/bin/perl /usr/local/pnp4nagios/libexec/process_perfdata.pl -d HOSTPERFDATA }
如果不想某项服务性能数据输出,可在服务中增加如下代码将process_performance_data关闭 define service { ... process_perf_data 0 ... }
Bulk Mode(Bulk模式):相对同步式复杂一点,由于同步模式是对每个event都进行处理,如果主机和服务数大就会造成监控服务器的性能下降。
在Bulk模式中,nagios会将性能数据以特定的格式写到一个临时目录中。pnp4nagios则定期调用process_perfdata.pl进行处理,处理完成后删除数据文件。这种方式减小了处理的次数,同时也减少了nagios主机的IO访问及负载,弥补了同步模式中的不足。
配置参考:
编辑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 编辑commands.cfg,增加或修改如下选项: define command{ command_name process-service-perfdata-file command_line /usr/local/pnp4nagios/libexec/process_perfdata.pl --bulk=/usr/local/pnp4nagios/var/service-perfdata } define command{ command_name process-host-perfdata-file command_line /usr/local/pnp4nagios/libexec/process_perfdata.pl --bulk=/usr/local/pnp4nagios/var/host-perfdata }
这里要注意的是,如果性能数据很大的话要适当修改pnp4nagios etc目录下的配置process_perfdata.cfg文件中的TIMEOUT值,以防止因超时限制导致数据未处理完!
(推荐使用此方法)Bulk Mode with NPCD模式:从名字上可以看出,这种模式和Bulk模式差不多,只是多了一步将性能数据加上时间戳移到spool目录中等待处理,npcd服务调用process_perfdata.pl脚本对数据进行处理。
配置参考:
编辑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 编辑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的templates.cfg文件
Bulk Mode with NPCD and npcdmod模式:工作原理:此模式中处理的流程与上一个差不多,不同的是不再使用nagios配置文件中的“*_perf_data_*”,改而使用了加载event broker模块npcdmod.o来替代,不过很遗憾不支持nagios4
配置参考:
process_performance_data=1 event_broker_options=-1 broker_module=/usr/local/pnp4nagios/lib/npcdmod.o config_file=/usr/local/pnp4nagios/etc/npcd.cfg 注意请不要同时启用“*_perf_data_*” 类的指令!
Gearman Mode模式:工作原理:齿轮模式是pnp0.6.12以后版本中加入的一种新模式,齿轮模式的最大优势是可以让nagios和pnp4nagios分别在不同的机器上工作,这样可以大大减少nagios监控主机的负载。工作方式如下图:
•配置参考:
编辑pnp4nagios etc目录下的process_perfdata.cfg,修改或增加如下选项: PREFORK = 1 GEARMAN_HOST = localhost:4730 REQUESTS_PER_CHILD = 10000 ENCRYPTION = 1 KEY = should_be_changed #KEY_FILE = /usr/local/pnp4nagios/etc/secret.key PREFORK = n #设置有多少个子进程 GEARMAN_HOST = 主机:端口 #指定运行german实例进程提供性能数据的主机和端口 REQUEST_PER_CHILD = n 设置每个子进程的请求处理数
设置完后,启动gearmon进程开始工作
# /etc/init.d/pnp_gearmon_worker start
####################################### end ######################
1、 配置templates.cfg文件
commands.cfg文件修改完毕后,我们现在来编辑templates.cfg文件。在该文件中加入如下选项:
vim /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 }
2、 配置主机cfg文件
以上文件全部配置完毕后,我们现在添加一台主机。如下:
vim /usr/local/nagios/etc/servers/localhost.cfg define host{ use linux-server,host-pnp host_name 5 alias client5 address 192.168.10.5 } define service{ use local-service,srv-pnp host_name 5 service_description Users check_command check_local_users!20!50 }
3、修改apache参数
# vim /usr/local/apache/conf/extra/httpd-vhosts.conf 增加以下配置: Alias /pnp4nagios "/usr/local/pnp4nagios/share" <Directory "/usr/local/pnp4nagios/share"> AllowOverride None Order allow,deny Allow from all AuthName "Nagios Access" AuthType Basic AuthUserFile /usr/local/nagios/etc/htpasswd Require valid-user <IfModule mod_rewrite.c> RewriteEngine On Options FollowSymLinks RewriteBase /pnp4nagios/ RewriteRule ^(application|modules|system) - [F,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* index.php/$0 [PT,L] </IfModule> </Directory>
4、查看pnp4nagios绘制图形
nagios配置完毕后,我们来检查下nagios配置是否正确。
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
现在我们来重新启动pnp4nagios和nagios,如下:
/etc/init.d/npcd restart /etc/init.d/nagios reload service httpd restart
pnp4nagios启动后,现在我们通过http://192.168.10.5/pnp4nagios/访问pnp4nagios
提示:Your environment passed all requirements. Remove or rename
the /usr/local/pnp4nagios/share/install.php file now.
解决办法:把/usr/local/pnp4nagios/share/install.php文件删除或者重命名.
对该文件操作文件后,我们再次刷新该页面,可能会出现如下的错误信息。如下: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/
修改完毕后,我们再来刷新该页面。
本站部分资源收集于网络,纯个人收藏,无商业用途,如有侵权请及时告知!