我在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图表进行特定服务检查以使结果不平均或舍入?事实上,因为它是一个整数,我根本不需要任何小数点。有什么想法吗?
答案 0 :(得分:0)
首先,您应该检查检查返回的perfdata - 应该是'key'=value
之后的有效perfdata规范。
然后了解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
并开始编辑(确保网络服务器的用户可以打开它)。
你会看到这只是创建对rrdtool
的调用,主要是在PHP代码中附加字符串。关于你的问题:
看着
$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”。如果在绘制图形时整合更合适,请四处游戏并将其设置为“最后”。
gprintf
的最后一行遵循printf
语法,其中lf
将是精度为4的双精度数和前面的3个数字(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 :(得分:0)
请注意to specify LAST
in the .php template as described in the other answer,您需要先在pnp4nagios文件&#34; rra.cfg&#34;中创建LAST作为合并功能。该文件中应该存在AVERAGE,MIN和MAX的现有值。
在我的系统中,该文件不存在,但我确实有rra.cfg-sample
。我将/usr/local/pnp4nagios/etc/rra.cfg-sample
复制到了/usr/local/pnp4nagios/etc/rra.cfg
。然后我编辑/usr/local/pnp4nagios/etc/rra.cfg
添加:
RRA:LAST:0.5:1:2880
RRA:LAST:0.5:5:2880
RRA:LAST:0.5:30:4320
RRA:LAST:0.5:360:5840
请注意,这些数字对应于我的步长值60秒(我每分钟轮询一次),因此您应该匹配rra.cfg文件中的现有值。
然后你必须删除现有的RRD文件并让pnp4nagios重新创建它们。
新的RRD文件现在应该有一个额外的&#34; cf&#34; (合并功能)。新的RRD文件也将增加25%。
[server]# rrdtool dump Interface_Drops_-_MET_ATL1_VIRL-FLAT.rrd | grep cf
<cf> AVERAGE </cf>
<cf> AVERAGE </cf>
<cf> AVERAGE </cf>
<cf> AVERAGE </cf>
<cf> MAX </cf>
<cf> MAX </cf>
<cf> MAX </cf>
<cf> MAX </cf>
<cf> MIN </cf>
<cf> MIN </cf>
<cf> MIN </cf>
<cf> MIN </cf>
<cf> LAST </cf>
<cf> LAST </cf>
<cf> LAST </cf>
<cf> LAST </cf>