我使用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个图形? 谢谢你的帮助!
答案 0 :(得分:1)
您错误地指定了您的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 tutorial来更好地了解如何指定RPN。