如果不做上面的一系列动作,在编译PNP的时候会出现如下的错误报告: WARNING: The RRDs Perl Modules are not found on your system Using RRDs will speedup things in larger installations.
接着进行编译安装PNP,注意下图红色箭头所注的安装选项:
[root@Nagios pnp-0.4.13]# make all
[root@Nagios pnp-0.4.13]# make install
[root@Nagios pnp-0.4.13]# make install-config
[root@Nagios pnp-0.4.13]# make install-init
安装完成。PNP默认文件的放置情况如下图所示:
如果没有上面截图所示的动作,下图红框部分将出现RRDs Perl Modules: ***NOT FOUND***
至此,PNP配置结束了。
在配置或者点击小太阳的过程中,可能会遇到各种错误,下面分别一一列出,以供以后参考:
a)时区问题:
报错
Warning: date() [function.date]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Chongqing' for 'CST/8.0/no DST' instead in /usr/local/nagios/share/pnp/include/function.inc.php on line 565
这是因为PHP所取的时间是格林威治标准时间,和我们当地时间会有出入。
#/usr/local/nagios/share/pnp/include/function.inc.php
加入如下图所示的一行:
Deprecated: Function eregi() is deprecated in /usr/local/nagios/share/pnp/include/function.inc.php on line 1502
问题的根源是php中有两种正则表示法,一个是posix,一个是perl,php6打算废除posix的正则表示法,所以后来就加了个preg_match。此问题解决办法可以在ereg前面加过滤符,将ereg()变成@ereg()。但是这种问题还是没有从根源上解决,php5.2版本之前ereg使用正常,在5.3之后,就要用preg_match来代替ereg。注意,posix和perl的很明显的区别就是是否加斜杠,后者不能少了“/”。所以改法为:
[root@nagios ~]#vim /usr/local/nagios/share/pnp/include/function.inc.php
1502 if($level == 2 && $type == "complete" && eregi("^NAGIOS_",$tag)){
改为
1502 if($level == 2 && $type == "complete" && preg_match("/^NAGIOS_/",$tag)){
Deprecated: Assigning the return value of new by reference is deprecated in /usr/local/nagios/share/pnp/include/function.inc.php on line 1026