簡體   English   中英

如何使用 rrdtool 讀取 rrd 文件

[英]How to read rrd files using rrdtool

我需要從 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>

我正在使用以下命令來讀取 rrdfiles。

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}

但我需要得到的值和outout應該如下,

2022-05-23 11:25:01 {'gauge1': 127916.03667, 'gauge2':  125955.38667}

有人可以幫我讀一下嗎?

如您所見, lastupdate()函數返回上次更新的數據,即更新時間和last_ds 您在 XML 中看到的value實際上是正在構建當前 pdp 的工作區,並且沒有特定的函數來檢索它。

當然,您可以調用info()函數,然后從返回的數據中提取ds[gauge1].value和類似的。 這可能是你想要的。

可能更好的方法是使用xport()並在 1cdp=1pdp RRA 中提取最新值,如果您在 RRD 中有一個。 這將讓您提取最高粒度 RRA 中的最新值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM