Nagios的安装配置与应用之四Nagios性能分析图表的实现
Nagios性能分析图表的作用
Nagios对服务或主机监控的是一个瞬时状态,有时候系统管理员需要了解主机在一段时间内的性能及服务的响应状态,并且形成图表,这就需要通过查看日志数据来分析。但是这种方式不但烦琐,而且抽象。为了能更直观的查看主机运行状态,我们可以利用PNP来帮助我们完成这个工作。
PNP的概念、安装环境及安装过程
PNP是一个小巧的开源软件包,它是基于PHP和Perl的。PNP可以利用rrdtool工具将Nagios采集的数据绘制成图表,然后显示主机或者服务在一段时间内运行的状况。
PNP环境要求如下:
a、安装了GD、zlib、jpeg且整合后的Apache和PHP环境。
b 、安装RDDtool工具
安装PNP
RRDtool是一个图表生成工具,可以从http://www.mrtg.org/rrdtool下载。
安装还是老方法:
[root@Nagios ]#tar zxvf rrdtool-1.4.7.tar.gz
[root@Nagios ]#cd rrdtool-1.4.7
[root@Nagios rrdtool-1.4.7]#./configure --prefix=/usr/local/rrdtool
[root@Nagios rrdtool-1.4.7]#make
[root@Nagios rrdtool-1.4.7]#make install
接着下载PNP,我用的是pnp-0.4.13.tar.gz。
在安装之前,检查模块是否存在:
不存在,做一个软链接继续检查,如下图示:
继续,接着链接,接着检查,如下图所示:
如果不做上面的一系列动作,在编译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
1、创建默认配置文件
在PNP安装完成后,默认安装目录下自带了模板配置文件,因此,只需将模板文件复制一份作为PNP配置文件即可。操作如下图所示:
2、修改process_perfdata.cfg文件
打开Nagios下的process_perfdata.cfg文件,修改相关内容。操作如下图示:
修改nagios配置文件
1、增加小太阳图标
修改templates.cfg,增加一个定义PNP的host和service。修改后的内容如下图所示:
2、修改nagios.cfg
如果想让nagios将数据输出,首先要修改nagios的主配置文件nagios.cfg,找到如下几项,如有注释的将其去掉。修改后的信息如下:
process_performance_data=1
host_perfdata_command=process-host-perfdata
service_perfdata_command=process-service-perfdata
3、修改commands.cfg
process-host-perfdata和process-service-perfdata指令声明了nagios输出哪些值到输出文件中。不过这些定义相对简单,而PNP提供了一个Perl脚本,非常详细地定义了一个输出数据的方法,process_perfdata.pl就是PNP自带的一个脚本,这个脚本在PNP安装完成后会自动生成。因此,可以将process-host-perfdata和process-service-perfdata指令中对应的执行命令的内容替换成此脚本。修改后的内容如下图所示:
4、修改hosts.cfg文件和services.cfg文件
将hosts-pnp和services-pnp引用到hosts.cfg和services.cfg中,修改后的hosts.cfg内容如下图示:
修改后的services.cfg内容如下图示:
以上是监控linux的范例。
下面是监控windows主机的
1、下载windows端软件包NSClient++-0.3.8-Win32.msi
2、双击安装即可,指定nagios的IP地址,密码就不用填了,然后一直下一步即可。如下图示:
在防火墙中添加12489的例外端口,如下图示:
在nagios服务器端执行命令测试,如果返回数据,表示NSClient++安装正常,如下图示:
3、在监控端配置对windows主机的各种系统资源的监控配置:
a)首先在nagios.cfg中配置相关的配置文件的位置,找到
cfg_file=/usr/local/nagios/etc/objects/windows.cfg #将此段路径前面的注释去掉
b)配置上面定义的windows.cfg文件,定义要监控的host和service,这里分别配置了AC.Green和ysadsrv02.ks-pcba.com如下图示:
c)配置完成后使用命令检查配置文件是否有错:
#/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
d)沒有錯誤報告的話,重啟nagios服务:
#/etc/init.d/nagios restart
4、使用http://ip/nagios进行访问或者http://ip/nagios/pnp,查看配置的结果,如下图示:
点击旁边的小太阳,我以AC.GREEN为例如下图示:
至此,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
删除上图标记中的&.
还有下图中的错误:
出现上图中的提示,需要手动在/usr/local/nagios/share/perfdata下手动建立redhat文件夹,并使用命令将拥有者权限修改一下:chown nagios:nagcmd redhat.类似情况作类似的动作即可!
出现上图中的情况,一者检查一下配置是否有问题,二来耐心等待一下,一般出图没有那么快。多数情况下是需要等待!
另外在配置NSCliet++ 的时候,查看网上有好多要修改安装路径下NSClient++下面的NSC.ini文件,然后再修改window的一些服务等等。我装完了没有作这些动作,如果有需要可以自行到网上查阅!