はじめに
お詫びの意味を込めてまとめました…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 のデータベースは非常に扱いやすいデータベースのような気もしてきました。
元記事は、こちらです。