0

気候データを収集するためにRRDtoolを使い始めたばかりです。グラフ機能は使用しませんが、「フェッチ」を使用してデータを取得します。次に、別のグラフ作成ソリューション(flot)を使用してデータを表示しますが、これはある程度機能しているようです。しかし、私はいくつかの小さな問題を抱えていて、更新とフェッチの詳細を確認することにしました。突然、期待どおりに機能するかどうか確信が持てなくなりました。

そこで、データベースを作成し、それに単一の値を入れて、内容を出力する小さなシェルスクリプトを作成しました。

#!/bin/sh

RRD=test.rrd
STEP=300
HB=600

# Remove previous databse to be sure that
# old data does not affect the test
rm -f $RRD

# Create database
rrdtool create $RRD \
    --start 2999999999 --step $STEP \
    DS:a:GAUGE:$HB:U:U \
    RRA:AVERAGE:0.5:1:1000

# Do a single update
rrdtool update $RRD \
    3000000400:123

# Fetch data and print to stdout
rrdtool fetch $RRD \
    --start 3000000000 --end 3000000900 AVERAGE

私はこれが次のような3つ(またはおそらく4つ、最後の1つについてはわからない)の値を出力することを期待します:

3000000000: -nan
3000000300: 123
3000000600: -nan
3000000900: -nan

しかし、これは私が得るものです:

3000000300: -nan
3000000600: -nan
3000000900: -nan
3000001200: -nan

だから私は3つの質問があります:

  1. フェッチコマンドが0ではなく300から始まるのはなぜですか?
  2. フェッチコマンドに最後のステップ(900)だけでなく、もう1つ(1200)も含まれているのはなぜですか?
  3. 更新された値が受け入れられなかったのはなぜですか?
4

1 に答える 1

1
  • タイムスロット b には、b 自体を除外して b までの b ステップに有効な情報が含まれています。したがって、3000000000 から 3000000900 までのデータを要求すると、取得する最初のエントリは 3000000300 になります。

  • データが 3000000900 で終了するように要求しているため、3000001200 のエントリが取得され、3000000900 自体がこのエントリの開始点になります。

  • 現時点では、ゲージ モードであっても、開始するには既知の値が必要です。最初の既知の更新では、既知の状態に戻すだけで、他には何も確立されません。GAUGE モードでは、これを別の方法で行うことができると主張する人もいるかもしれません。

于 2011-01-20T06:57:53.457 に答える