仙人掌 - 错误:RPN 最终堆栈大小 != 1,带有 4 个图形



我使用Cacti和rrdxport来获取2个图的总和,它工作正常。

rrdtool xport --start now-5min --end now-5min DEF:out1=sbc1_fs_call_five_min_do_137.rrd:fs_call_five_min_do:LAST DEF:out2=sbc2_fs_call_five_min_do_147.rrd:fs_call_five_min_do:LAST CDEF:sum=out1,out2,+ XPORT:sum:"output sum"

输出:

<xport> 
<meta>
<start>1524226500</start>
<step>300</step>
<end>1524226500</end>
<rows>1</rows>
<columns>1</columns>
<legend>
<entry>output sum</entry>
</legend>
</meta>  
<data>
<row><t>1524226500</t><v>7.1630000000e+02</v></row> 
</data>
</xport>

现在我想添加 4 个图表,但我总是收到错误 RPN 最终堆栈大小 != 1。

rrdtool xport --start now-5min --end now-5min DEF:out1=sbc1_fs_call_five_min_do_137.rrd:fs_call_five_min_do:LAST DEF:out2=sbc1_berlin_fs_call_five_min_do_1176.rrd:fs_call_five_min_do:LAST DEF:out3=sbc2_fs_call_five_min_do_147.rrd:fs_call_five_min_do:LAST DEF:out4=sbc2_berlin_fs_call_five_min_do_1187.rrd:fs_call_five_min_do:LAST CDEF:sum=out1,out2,out3,out4,+ XPORT:sum:"output sum" ERROR: RPN final stack size != 1

为什么它适用于 2 个图形而不是 4 个图形?
感谢您的帮助!

您错误地指定了 RPN 函数,并且堆栈中还剩下多个项目。

此函数按预期工作:

CDEF:sum=out1,out2,+

这是因为 RPN 命令的序列说:

  • out1放在堆栈上,
  • out2放在堆栈上,
  • 删除前两项并添加它们,然后将结果推送到堆栈上

这会导致堆栈包含单个项目,其值为 (out1+out2)。

但是,您的第二次尝试会这样做:

CDEF:sum=out1,out2,out3,out4,+

这意味着:

  • out1放在堆栈上,
  • out2放在堆栈上,
  • out3放在堆栈上,
  • out4放在堆栈上,
  • 删除前两项并添加它们,然后将结果推送到堆栈上

因此,堆栈现在包含三个东西 - out1,out2和(out3 + out4)。 RRDTool 检查堆栈大小以捕获任何 RPN 错误,以及错误,因为它看到堆栈中剩余了多个项目。

您应该做的是在定义中添加另外两个加法操作:

CDEF:sum=out1,out2,out3,out4,+,+,+

这会向 RPN 添加另外两个步骤,以添加堆栈上的剩余两个项目并获得所需的结果。

我建议您完成 RPN 教程,以更好地了解如何指定 RPN。

相关内容

  • 没有找到相关文章

最新更新