pnp4nagios是一款强大的工具,它可以通过process_perfdata.pl脚本调用rrdtool对nagios的性能数据进行分析并绘制成相应的性能图。pnp4nagios有5种工作模式,它们分别是Synchronous Mode、Bulk Mode、Bulk Mode with NPCD、Bulk Mode with NPCD and npcdmod和Gearman Mode,下面就这几种模式的工作原理及配置进行说明

 

1.Synchronous Mode

  • 工作原理

    同步模式是最简单的一种集成方式,它的工作原理是直接将process_perfdata.pl集成到nagios,并每个event都执行一次调用,如下图 

68551411751361.png

  •   配置参考

编辑nagios.cfg,更改或增加如下选项
#使nagios性能数据输出
process_performance_data=1
#启用nagios环境变量输出
enable_environment_macros=1
#服务性能数据输出命令名 
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
   ...
}

 

2.Bulk Mode

  • 工作原理

    Bulk模式相对同步式复杂一点,由于同步模式是对每个event都进行处理,如果主机和服务数大就会造成监控服务器的性能下降。在Bulk模式中,nagios会将性能数据以特定的格式写到一个临时目录中。pnp4nagios则定期调用process_perfdata.pl进行处理,处理完成后删除数据文件。这种方式减小了处理的次数,减少了nagios主机的IO访问及负载,弥补了同步模式中的不足。

77721411751361.png

  • 配置参考

编辑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值,以防止因超时限制导致数据未处理完!

 

3.Bulk Mode with NPCD

  • 工作原理

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

92401411751361.png

  • 配置参考

编辑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$
}

 

4.Bulk Mode with NPCD and npcdmod

  • 工作原理

此模式中处理的流程与上一个差不多,不同的是不再使用nagios配置文件中的“*_perf_data_*”,改而使用了加载event broker模块npcdmod.o来替代,不过很遗憾不支持nagios4

45941411751361.png

  • 配置参考

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_*” 类的指令!

 

5.Gearman Mode

  • 工作原理

齿轮模式是pnp0.6.12以后版本中加入的一种新模式,齿轮模式的最大优势是可以让nagios和pnp4nagios分别在不同的机器上工作,这样可以大大减少nagios监控主机的负载。工作方式如下图:

681411751361.png

  • 配置参考

编辑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

 

转载:感谢原作者【http://www.kar-chan.com/?p=2267