2017-04-04 103 views
1

作爲上面的標題,我想在rrd數據庫中存儲多個數據,以便稍後可以執行一個溫度圖。rrdtool更新錯誤(nan)

echo rrdtool update rn23.rrd `/ops/bin/finf | awk '$1 == "rn23" { print $2 ":" $11 }'`

輸出是:當我使用awk命令

我的名爲數據庫rn23.rrd

rrdtool update rn23.rrd 1491273800:48

然後,我刪除 「回聲」更新rn23.rrd中的數據:

rrdtool update rn23.rrd `/ops/bin/finf | awk '$1 == "rn23" { print $2 ":" $11 }'`

,但是當我嘗試使用再次獲取數據:

rrdtool fetch rn23.rrd MAX --start 1491210243 --end now

結果顯示如下: 1491270300: -nan 1491270600: -nan 1491270900: -nan 1491271200: -nan 1491271500: -nan 1491271800: -nan 1491272100: -nan 1491272400: -nan 1491272700: -nan 1491273000: -nan 1491273300: -nan

做任何你們知道爲什麼只承認時間戳,但不是溫度?以及如何解決這個問題?

回答

0

不知道你的RRD-IE的結構,你如何定義它,DS和RRA定義 - 這是不可能確定的,但我相當肯定你對RRDTool的工作原理有一個基本的誤解。

RRDTool不是一個關係數據庫,它完全按照您提供的那樣存儲一組記錄。相反,它一些額外consolodation步驟存儲之前:

  • 數據標準化
  • 率的計算
  • Consolodation到的RRA

這些都可以在你可能沒有想到的方式調整您的數據。主要的是第二步,其中需要至少兩個歸一化數據點來完成。

當你打電話給rrdtool fetch時,你實際上是在查詢RRA,如果連鎖開始時還沒有足夠的數據,你在RRA中沒有任何東西。

只有一個數據樣本,您甚至不可能有一個完整的PDP(主要數據點),即使您有,您的RRA中也可能沒有CDP(合併數據點),具體取決於您的RRD間隔大小和最小定義的RRA中CDP中的PDP數量。

如果這是一個有點吃不消了你,再有就是一個很好的一套教程這裏由難以拼寫姓的亞歷克斯: http://rrdtool.vandenbogaerdt.nl/

的TLDR是:給它更多的數據點!以RRD間隔(600s?)提交至少3個間隔的樣本;從你的發帖中,我猜你有300秒的間隔和1cdp = 1pdp RRA的定義,但是如果你的間隔是60秒,你可能需要在60秒間隔7或更多。然後你會看到RRA中出現的數據點。