pnp4nagios的数据格式

虽然pnp4nagios本意上是nagios的一个插件,提供一个web界面,展示nagios里的数据,但是可以把pnp4nagios单独搭建起来,使用它的web界面来展示我的数据。只需要4个步骤:

  1. 写一个数据格式转换工具,把我的数据转换成pnp4nagios的格式,而这个数据格式,就是这里我要说的,因为pnp4nagios的官方文档里并没有提到
  2. 数据转换工具输出的数据文件,放到pnp4nagios配置的一个文件目录里,spool目录
  3. 启用pnp4nagios的npcd进程,这是一个C语言daemon,使用它的bulk工作模式(默认)。由npcd扫描这个spool目录,然后把每个文件给予perl脚本process_perfdata.pl(pnp4nagios提供),脚本把数据写入RRD文件
  4. 配置展示数据的模板,把模板给到pnp4nagios的模板目录

目前我使用pnp4gios提供了一个伪接口,传入机器的hostname和模板名,就可以查看数据了,调用方式类似:
http://your_hostname/pnp4nagios/index.php/graph?host=param_hostname&srv=param_template
传入了2个参数:hostsrv

嗯,总的来说,使用的是pnp4nagios的Bulk Mode with NPCD模式,抛开nagios,把pnp4nagios单独拿出来。



pnp4nagios的数据格式,也就是输入到脚本process_perfdata.pl的每个文件,文件名要求默认要求是以perfdata开头。这个perl脚本对应有一个配置文件process_perfdata.cfg,有较多的配置需要在这里修改。而脚本期望的每一行数据(这里假设我只使用SERVICEPERFDATA这个数据类型)包含如下字段,各个字段用\t分割,字段顺序没要求:

DATATYPE                            值为SERVICEPERFDATA
TIMET                                时间戳
HOSTNAME                            域名或ip
SERVICEDESC                        服务描述
SERVICEPERFDATA                    性能数据
SERVICECHECKCOMMAND                命令名,跟模板名一致,process_perfdata.pl使用它来匹配模板名

各个字段中,稍微复杂些的是「性能数据」SERVICEPERFDATA的格式,为:'label'=value[UOM];[warn];[crit];[min];[max],可以包含多个性能数据,空格分割。
性能数据格式SERVICEPERFDATA在pnp4nagios文档有详细描述。

总的来说,假设有一个数据样例为:

  1. DATATYPE::SERVICEPERFDATA TIMET::1378779841 HOSTNAME::zh_v542 SERVICEDESC::PING SERVICECHECKCOMMAND::check_icmp SERVICEPERFDATA::rta=92.412ms;200.000;500.000;0; pl=0%;40;80;; rtmax=97.281ms;;;; rtmin=86.727ms;;;;

数据经处理后,通过数据里的zh_v542(hostname)check_icmp(servicecheckcommand),访问urlhttp://your_hostname/pnp4nagios/index.php/graph?host=zh_v542&srv=check_icmp就可以查看pnp4nagios的数据展示了。

后续我再把略微繁琐的部署和配置记录一下,以备忘。



– EOF –

Categories: in_lib
Tags: nagios,perl