首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nagios PNP4Nagios平均整数值?

Nagios PNP4Nagios平均整数值?
EN

Stack Overflow用户
提问于 2013-05-22 03:59:44
回答 2查看 2.9K关注 0票数 2

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

代码语言:javascript
复制
$conns = nestat -na | select-string -pattern "ESTABLISHED"
$NumberOfConnections = $conns.count
$NumberOfConnections

输出类似于:

代码语言:javascript
复制
123

按照预期工作。但是,当我用Nagios表示它并每三分钟运行一次检查时,结果以pnp4nagios格式表示,如120.657或125.124 (它像浮点数一样对值进行平均,而不是用整数表示)。

有没有人知道我如何强制Nagios和PNP4Nagios RRDtool绘图来进行特定的服务检查,而不是对结果进行平均或舍入?事实上,因为它是一个整数,所以我根本不需要任何小数点。有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2013-06-09 23:17:19

首先,您应该检查检查返回的性能数据本身-应该是遵循有效的性能数据规范的类似于'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并开始编辑(确保webserver的用户可以打开它)。

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

如果您不想使用AVG,但legend

  • floating点格式中的当前值不是所需的值,则可使用

看着

代码语言:javascript
复制
$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 (整数)可能会解决图例的问题。

你可以按如下所示进行更改。

代码语言:javascript
复制
$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如何将性能数据发送到PNP4Nagios的最新值,您还可以使用另一个技巧- pnp在自己的*.xml文件中存储不适合rrd存储的额外数据。然后,这些xml文件会随着process_perfdata.pl运行的每次正常的rrd更新而更新。其中之一是"ACT“(检查1),它可以在第一个数据源上访问,就像模板代码中的$ACT[1]一样,然后作为注释字符串传递给rrdtool调用。

代码语言:javascript
复制
$def[$KEY] .= "COMMENT:\"Current $ACT[$key]\\n\" ";"

1

2

票数 0
EN

Stack Overflow用户

发布于 2017-06-26 22:34:43

注意to specify LAST in the .php template as described in the other answer,你需要首先在pnp4nagios文件"rra.cfg“中创建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以添加:

代码语言:javascript
复制
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文件现在应该有一个额外的"cf“(合并功能)。新的RRD文件也将大25%。

代码语言:javascript
复制
[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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16678451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档