gpt4 book ai didi

powershell - Nagios PNP4Nagios平均整数值?

转载 作者:行者123 更新时间:2023-12-03 00:19:42 25 4
gpt4 key购买 nike

我在nagios中有一个powershell脚本,该脚本使用内置的Windows netstat命令返回一个整数。命令如下:

$conns = nestat -na | select-string -pattern "ESTABLISHED"
$NumberOfConnections = $conns.count
$NumberOfConnections

输出类似于:
123

可以正常工作。但是,当我将其绘制为Nagios并每三分钟运行一次检查时,结果以pnp4nagios的形式绘制,例如120.657或125.124(它是将值像浮点型一样求平均值,而不是绘制整数)。

有谁知道我该如何强制针对特定服务检查的Nagios和PNP4Nagios RRDtool绘图不求平均值或取整?实际上,因为它是整数,所以我根本不需要任何小数点。有任何想法吗?

最佳答案

首先,您应该检查支票返回的自身perfdata-应该遵循有效的perfdata规范,类似于'key'=value

然后了解一下pnp4nagios模板的工作原理-根据您的版本(正在积极开发0.6),例如此处:[1]

默认情况下,模板将通过其检查命令名称进行查找(因此,如果您没有为自定义检查创建模板,则可能会使用default.php模板)。

根据pnp4nagios的安装方式,可以在$prefix/share/templates.dist下找到模板目录-将您的目录放在$prefix/share/templates中,以防止它们在升级过程中丢失。现在,将$prefix/share/templates.dist/default.php复制到$prefix/share/templates/<yourcheckcommandname>.php并开始进行编辑(确保Web服务器的用户可以打开它)。

您会看到这只是创建对rrdtool的调用,该调用主要是在php代码中附加了字符串。关于您的问题:

  • 您不希望拥有AVG,但是图例中的当前值
  • 不需要
  • 浮点格式

  • 看着
    $def[$KEY]  = rrd::def     ("var1", $VAL['RRDFILE'], $VAL['DS'], "AVERAGE");
    $def[$KEY] .= rrd::gradient("var1", "3152A5", "BDC6DE", rrd::cut($VAL['NAME'],16), 20);
    $def[$KEY] .= rrd::line1 ("var1", $_LINE );
    $def[$KEY] .= rrd::gprint ("var1", array("LAST","MAX","AVERAGE"), "%3.4lf%S".$VAL['UNIT']);

    在第一行中,您将 var1定义为“AVERAGE”。试一下,如果在绘制图形时更适合该合并,则将其设置为“LAST”。
    gprintf的最后一行遵循 printf语法,其中 lf将是精度为4和3的 double 数,位于前面(3.4)[2]
    %lf更改为 %d(整数)可能会解决图例问题。

    您可以如下进行更改,例如
    $def[$KEY]  = rrd::def     ("var1", $VAL['RRDFILE'], $VAL['DS'], "LAST");
    $def[$KEY] .= rrd::gradient("var1", "3152A5", "BDC6DE", rrd::cut($VAL['NAME'],16), 20);
    $def[$KEY] .= rrd::line1 ("var1", $_LINE );
    $def[$KEY] .= rrd::gprint ("var1", array("LAST","MAX","AVERAGE"), "%d %S".$VAL['UNIT']);

    这些模板还有其他可能性-例如缩放y轴等-那时只是 rrdtool语法。

    为了打印Nagios / Icinga Core如何将perfdata发送到PNP4Nagios的最新值,您还可以使用另一种技巧-pnp在其自己的 *.xml文件中存储不适合rrd存储的其他数据。然后,这些xml文件使用 process_perfdata.pl运行的每个常规rrd更新进行更新。
    其中一个是“ACT”(选中[1]),可以像模板代码中的 $ACT[1]一样在第一个数据源上对其进行访问,然后将其作为注释字符串传递给rrdtool调用。
    $def[$KEY] .= "COMMENT:\"Current $ACT[$key]\\n\" ";"

    [1] http://docs.pnp4nagios.org/pnp-0.6/tpl

    [2] http://www.cdf.toronto.edu/~ajr/209/notes/printf.html

    关于powershell - Nagios PNP4Nagios平均整数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16678451/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com