原文:http://docs.pnp4nagios.org/pnp-0.6/modes

Synchronous Mode

PNP4Nagios的工作模式比较_pnp4nagios模式

第一种:同步模式

   最简单的一种模式,设置简单;nagios为每个服务和主机调用process_perfdata脚本各自的去处理接收到的数据;同步模式下在工作比较好的情况下每五分钟可以处理大约1000个服务,所以此模式性能比较差,不能应用到比较大的环境下。


Bulk Mode

PNP4Nagios的工作模式比较_nagios_02

第二种:容器模式

   引用一个spool文件来充当临时的容器,收集到一定的时间段以后调用process_perfdata.pl来读取spool临时文件来更新RRD数据库和写XML元数据,所以此模式相对于系统调用少,但是process_perfdata.pl脚本执行的时间长,性能比第一种有质的提高,但是会出现数据更新的延时,原引官方网站的列子:

snippetof var/perfdata.log:

2007-10-1812:05:01 [21138] 71 Lines processed
2007-10-18 12:05:01 [21138] .../spool/service-perfdata-1192701894-PID-21138deleted
2007-10-18 12:05:01 [21138] PNP exiting (runtime 0.060969s) ...

   71行数据执行只需要0.06秒,这意味着十秒钟就可以执行2000个服务,性能得到了很大的提高,但是nagios整整执行了0.06秒的时间。



Bulk Mode with NPCD

PNP4Nagios的工作模式比较_pnp模式 _03

第三种:由NPCD管理的容器模式

  这是目前为止PNP4Nagios最好的工作模式,nagios使用临时文件来存储过一段时间要执行的数据,nagios不直接执行这个临时文件中的数据,而是把这个临时文件移动到spool目录里面,因为是同文件系统内的移动,所以几乎不花费什么时间,然后nagios就去继续执行重要的工作,然后NPCD进程扫描spool目录,如果发现新的spool文件调用process_perfdata.pl脚本来执行;NPCD进程是nagios优化的C进程,使用NPCD进程来处理spool文件以后,就可以把nagios进程中处理这些数据上解放出来去做重要的工作,并不需要中断,而且NPCD可以使用多个线程来来处理数据,所以性能很优越。


Bulk Mode with npcdmod

PNP4Nagios的工作模式比较_pnp模式 _04

第四种:NPCD模块化的容器模式

   使用Nagios4的话加载此模块会失败,而且至今也没有相关的计划去解决这个问题,所以如果你使用Nagios4的话就选择其他的工作模式吧

   这种方案包括npcdmod.o和NEB-module模块,简化了在“BulkMode with NPCD”模式下nagios.cfg文档内的配置,而且这种模式提供一样的功能和性能。


Gearman Mode

PNP4Nagios的工作模式比较_pnp模式 _05

第五种:Gearman模式

    0.6.12版本以后PNP4Nagios出的一个gearman模式,在比较大的nagios环境下才肯呢过使用这个mod_gearmanNagiosPNP4Nagios运行在不同的机器上