日々是精進のかっぱ(@inokara)です。

はじめに

お詫びの意味を込めてまとめました…whisper データベースの中身を覗いたり、リサイズしたりしてみます。

やってみる

CentOS の場合に RPM で Graphite をインストールすると /var/lib/carbon/whisper/ 以下に whisper のデータベースが生成されます。

例えば…

以下のように Graphite にデータを送った場合には…

echo "kappa-test.MARKDOWN_HASH0d42a059936e5d750fd0de7476035ec8MARKDOWN_HASH.MARKDOWN_HASHd74a9e928fe21c673df6d9090c08b6bcMARKDOWN_HASH MARKDOWN_HASHf9beda64c9d78bb5c6bd258047a16a4bMARKDOWN_HASH" | nc ${SERVER} ${PORT}

/var/lib/carbon/whisper/kappa-test/${hostname}.wsp というディレクトリとファイルが生成されます。

情報を見る

メトリクスデータは ${hostname}.wsp に保存されることになりますが、このデータベースファイルの情報は whisper-info.py というツールを利用します。whisper-info.py の使い方は以下のように whisper データベースを指定して実行します。

./whisper-info.py /var/lib/carbon/whisper/kappa-test/${hostname}.wsp

以下のように出力されます。

maxRetention: 3600
xFilesFactor: 0.5
aggregationMethod: average
fileSize: 43228

Archive 0
retention: 3600
secondsPerPoint: 1
points: 3600
size: 43200
offset: 28

とりあえずは maxRetention あたりに注意です。

中身を除く

次にデータベースファイルの中身を覗いてみたいと思います。これは whisper-dump.py を使います。以下のように実行します。

./whisper-dump.py /var/lib/carbon/whisper/kappa-test/${hostname}.wsp

以下のように出力されます。

Meta data:
  aggregation method: average
  max retention: 3600
  xFilesFactor: 0.5

Archive 0 info:
  offset: 28
  seconds per point: 1
  points: 3600
  retention: 3600
  size: 43200

Archive 0 data:
0: 0,          0
1: 0,          0
2: 0,          0
3: 0,          0
4: 0,          0
5: 0,          0
6: 0,          0
7: 0,          0
8: 0,          0

~ snip ~

3596: 0,          0
3597: 0,          0
3598: 0,          0
3599: 0,          0

3600 行表示されるので 1 秒毎に 3600 個のメトリクスデータを保持出来るのがわかります。

サイズを変更する

さらにデータベースのリサイズをしてみたいと思います。リサイズは whisper-resize.py を利用します。以下のように実行します。

./whisper-resize.py /var/lib/carbon/whisper/kappa-test/${hostname}.wsp 1s:1d

上記は該当のデータベースを 1 秒毎に取得して 1 日保存するデータベースに変更します。第二引数の 1s:1d に注目です。

実行すると以下のように表示されます。

Retrieving all data from the archives
Creating new whisper database: /var/lib/carbon/whisper/kappa-test/${hostname}.wsp.tmp
Created: /var/lib/carbon/whisper/kappa-test/${hostname}.wsp.tmp (1036828 bytes)
Migrating data without aggregation...
Renaming old database to: /var/lib/carbon/whisper/kappa-test/${hostname}.wsp.bak
Renaming new database to: /var/lib/carbon/whisper/kappa-test/${hostname}.wsp

新しいファイル作ってダンプしていたりするのかもしれません…。whisper-resize.py 等は何れも Python スクリプトなので余裕がある時に中身を覗いておきたいと思います。

リサイズの結果を見てみたいと思います。

./whisper-info.py /var/lib/carbon/whisper/kappa-test/${hostname}.wsp

を実行すると…

maxRetention: 86400
xFilesFactor: 0.5
aggregationMethod: average
fileSize: 1036828

Archive 0
retention: 86400
secondsPerPoint: 1
points: 86400
size: 1036800
offset: 28

maxRetention の値が変わっています。

さらに…

./whisper-dump.py /var/lib/carbon/whisper/kappa-test/${hostname}.wsp

を実行すると…

Meta data:
  aggregation method: average
  max retention: 86400
  xFilesFactor: 0.5

Archive 0 info:
  offset: 28
  seconds per point: 1
  points: 86400
  retention: 86400
  size: 1036800

Archive 0 data:
0: 0,          0
1: 0,          0
2: 0,          0
3: 0,          0
4: 0,          0
5: 0,          0
6: 0,          0
7: 0,          0
8: 0,          0

~ snip ~

86392: 0,          0
86393: 0,          0
86394: 0,          0
86395: 0,          0
86396: 0,          0
86397: 0,          0
86398: 0,          0
86399: 0,          0

上記のように行数も変わっています。

さいごに

こうやってみると whisper のデータベースは非常に扱いやすいデータベースのような気もしてきました。

元記事は、こちらです。