Nagios 性能图

Kas*_*sen 5 nagios graph

我已经编写了自己的 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"';

?>
Run Code Online (Sandbox Code Playgroud)

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

当我添加第 4 个图时,它会绘制 3 个图。如果我添加一个,$def[5] = "hmmm";则会显示第 4 个图形,但带有一个破碎的图片图标。

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

任何人都可以对这里发生的事情有所了解吗?

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

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

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

Ala*_*lan 4

当你第一次开始深入了解这些内容时,这绝对是令人困惑的。您实际上已经弄清楚了很多关键部分,让我们看看我是否可以帮助您了解它们如何组合在一起。

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

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"
Run Code Online (Sandbox Code Playgroud)

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
}
Run Code Online (Sandbox Code Playgroud)

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
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这只是开始讨论这个话题,希望对您有所帮助!