Nagios 性能图

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"';

?>

注释掉第四张图后,通常只会绘制前两张(而不是三张)图(第三张图就不存在)。我说通常,是因为在写这篇文章时我再次检查了它,这次它坚持要绘制 5 张图,其中前三张符合预期,而后两张有一个损坏的图片图标。

当我添加第 4 个图表时,它会绘制 3 个图表。如果我添加一个,$def[5] = "hmmm";则第 4 个图表会显示,但图片图标会损坏。

我已经更改了标题以确保它确实是这个文件而不是缓存的东西,但这些变化就像我预期的那样。

有人可以解释一下这里发生了什么吗?

仅使用第四个组合图即可$def[1]

尝试调试为什么它不会显示为第四张图,这让我想到了nagiosxi/html/includes/components/perfdata/graphApi.php。它似乎试图从位于 rrd 文件旁边的 perfdata xml 文件中找到第四个数据源。当然,这只有 3 个数据集,因为我只使用 3 个数据集。我需要所有四个图表。

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

答案1

当你第一次开始深入了解时,这些东西肯定会让你感到困惑。实际上,你已经弄清楚了许多关键部分,让我们看看我是否能帮助你理解它们是如何组合在一起的。

以下是我通过自己的实验了解到的信息:

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"

PNP 配置在 /usr/local/nagios/etc/nagios.cfg 中完成

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

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

2)RRD数据源和图形模板

看:http://docs.pnp4nagios.org/pnp-0.4/tpl

php 模板脚本位于 /usr/local/nagios/share/pnp/。

php 图形模板在与您要绘制其数据的主机或服务命令关联的 RRD 数据文件的上下文中调用。如果命令没有模板,则使用 default.php。

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

第四张图表显示出来,但图片图标损坏。

而且,正如您所发现的,您可以自定义针对特定数据源显示的图表:

仅使用第四个组合图作为 $def[1] 即可工作。

3)默认.php

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

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

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

我只需让你的 perl 脚本生成第四个数据源并用零填充它:

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

然后,在 default.php 中,您可以为该数据源创建自定义图表:

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
    }
  }
}

这只是开始涉及这个主题,我希望它能有所帮助!

相关内容