Nagios性能图

我写了我自己的perl脚本来从我的服务器返回状态。 它运行得很好(即性能数据:val1 = 1; val2 = 5; val3 = 10)。

使用templates.dist / default.php这给了我3张(如我所料)。

现在我遇到的这个问题是,我想多做一个图表,其中包含所有3个值。

我一直在摆弄模板文件,但我得到的结果似乎非常随意和混乱。

<?php for($i=1; $i < count($DS); $i++) { $opt[$i] = '--title "My Graph '.$i.'"'; $def[$i] = 'DEF:var1='.$rrdfile.':'.$DS[$i].':AVERAGE LINE1:var1#000000'; } $opt[4] = '--title "My Graph 4"'; $def[4] = 'DEF:var1='.$rddfile.':'.$DS[1].':AVERAGE '. 'DEF:var2='.$rddfile.':'.$DS[2].':AVERAGE '. 'DEF:var3='.$rddfile.':'.$DS[3].':AVERAGE '. 'LINE1:var1#FF0000:"Var 1" '. 'LINE1:var2#FF0000:"Var 2" '. 'LINE1:var3#FF0000:"Var 3"'; ?> 

第四个图表评论说,这通常只画出前两个(而不是三个)图(第三个图不在那里)。 我通常说,因为在做这个post的时候,我再次检查了一次,这次它做了5张图,其中前3张如预期的那样,最后两张有一个破碎的图片图标。

当我添加第四张图时,绘制了3张图。 如果我添加一个$def[5] = "hmmm"; 然后显示第四个graphics,但是有一个破碎的图片图标。

我已经改变了标题,以确保它真的是这个文件,而不是caching,但这些变化就像我期望他们。

任何人都可以请说一说这里发生了什么?

只使用第四个组合图作为$def[1]作品。

试图debugging为什么它不会显示为第四个graphics导致我nagiosxi/html/includes/components/perfdata/graphApi.php 。 它看起来像试图从位于rrd文件旁边的perfdata xml文件中find第四个数据源。 因为我只有3个数据集,所以只有3个数据集。 我需要全部四个图表。

如何为给定的服务添加更多的图表而不是数据集的数量?

当你第一次开始寻找隐藏的东西时,这个东西肯定是令人困惑的。 你其实已经弄清了很多重要的东西,让我们来看看我能否帮助你理解它们是如何融合在一起的。

以下是我通过自己的实验学到的东西:

1)PNP4Nagios

看到他们的主要网站: http : //docs.pnp4nagios.org/pnp-0.4/start

要确认您使用的是PNP4Nagios,请查看:

 $ more /usr/local/nagios/etc/pnp/pnp4nagios_release PKG_REL_DATE="05-02-2009" PKG_VERSION="0.4.14" PKG_NAME="pnp" 

PNPconfiguration在/usr/local/nagios/etc/nagios.cfg中完成

下面是我最近发现的一个很好的概述,它包含了对nagios.cfg中各种PNP相关设置的描述:

http://bitflip.net/files/pnp4nagios-presentation-20090409.pdf

2)RRD数据源和graphics模板

见: http :

php模板脚本可以在/ usr / local / nagios / share / pnp /中find。

一个phpgraphics模板在RRD数据文件的上下文中被调用,该数据文件与你试图绘制数据的主机或服务命令相关联。 如果命令没有模板,则使用default.php。

如你所见,你不能简单地添加第四个图表,因为没有相应的数据源:

第四个graphics显示,但有一个破碎的图片图标。

而且,正如您还发现的那样,您可以自定义针对特定数据源显示的graphics:

只使用第四个组合图作为$ def [1]的作品。

3)default.php

请记住,只要主机或服务命令没有关联的graphics模板,就会使用default.php。 这意味着您所做的任何更改都会影响整个系统的默认graphics。 如果这就是你想要的,没问题。 否则,只需添加一个检查你想要自定义graphics的主机和/或服务:

 if ($hostname == 'MyHost') { // generate a customized graph } else { // generate the default graph } 

4)最后,如何创build一个组合图并显示原来的三个数据源。

我会简单地让你的perl脚本生成第四个数据源,并填充零:

val1=1;; val2=5;; val3=10;; val4=0;;

然后,在default.php中,您可以为该数据源创build一个自定义graphics:

 foreach ($DS as $i) { if ($servicedesc == 'My_Test_Service') { if ($i == 4) { # the "val4" placeholder datasource // your combined graph logic goes here } else { // datasource 1 to 3 graph logic goes here } } } 

这只是开始涵盖这个话题,我希望它有帮助!