我需要从rrdtool获取特定的数据字段。这里有我的rrdfile的xml输出。
<ds>
<name> gauge1 </name>
<type> COUNTER </type>
<minimal_heartbeat> 600 </minimal_heartbeat>
<min> 0.0000000000e+00 </min>
<max> 1.0000000000e+08 </max>
<!-- PDP Status -->
<last_ds> 10109068304313 </last_ds>
<value> 1.2791603667e+05 </value>//need to read this value
<unknown_sec> 0 </unknown_sec>
</ds>
<ds>
<name> gauge2 </name>
<type> COUNTER </type>
<minimal_heartbeat> 600 </minimal_heartbeat>
<min> 0.0000000000e+00 </min>
<max> 1.0000000000e+08 </max>
<!-- PDP Status -->
<last_ds> 8604908605180 </last_ds>
<value> 1.2595538667e+05 </value>//need to read this value
<unknown_sec> 0 </unknown_sec>
</ds>我使用以下命令读取rrdfile。
file_path=r'/data/rrd_new/XXX.rrd'
rrdfilename = file_path
rrd = rrdtool.lastupdate(rrdfilename)
time = rrd['date']
ds = rrd['ds']
print(time,ds)但这提供了如下输出,即<last_ds>的值
2022-05-23 11:25:01 {'gauge1': 10109068304313.0, 'gauge2': 8604908605180}但我需要得到的值应该如下,
2022-05-23 11:25:01 {'gauge1': 127916.03667, 'gauge2': 125955.38667}有人能帮我读一下这个吗?
发布于 2022-05-25 21:47:09
正如您所看到的,lastupdate()函数返回上次更新的数据、IE更新时间和last_ds。您在XML中看到的value实际上是构建当前pdp的工作区,并且没有特定的函数来检索它。
当然,您可以调用info()函数,然后从返回的数据提取ds[gauge1].value和类似的。这也许是你想要的。
更好的方法可能是使用xport()并提取1cdp=1pdp RRA中的最新值,如果您在RRD中有一个RRA的话。这将允许您在最高粒度的RRA中提取最近的值。
https://stackoverflow.com/questions/72376701
复制相似问题