RRDCached の使い方

RRDtool を高速化する rrdcached の使い方

RRDcached とは

RRDcached は RRDtool のためのキャッシュサーバーです.

RRDtool は加速度や湿度センサーの値,サーバーのCPU負荷,パケット数,と言った時系列データに特化したデータベースです.RRDtoolだけでもかなり便利ですが,さらに RRDcached と組み合わせると,

  • RRDtoolの高速化
  • sdカードやSSDに対する書き込み回数を削減する効果

が期待できます.

特に後者の効果が重要で,例えば,ラズパイベースのフィジカルコンピューティングで何も考えずにセンサデータを逐次 sdに書き込んでいると,sdカードはすぐに書き込み寿命に達します.こういう時は rrdtool + rrdcached の構成が一つの解決策になります(別解は tmpfs のようなRAMディスクを使う方法)

インストール

$ sudo apt install rrdcached

設定ファイル

/etc/default/rrdcached

デフォルト設定は以下の通り

  • データを保持するディレクトリ /var/lib/rrdcached
  • データベースの実態を保存するディレクトリ /var/lib/rrdcached/db
  • データベースのジャーナルを保存するディレクトリ /var/lib/rrdcached/journal
  • 通信用のソケット /var/run/rrdcached.sock

アクセス制限(簡便な方法)

アクセス制限はファイルのパーミッションで行う(他の方法は設定がめんどくさいので無視)

デフォルト設定では,キャッシュサーバーとなる /usr/bin/rrdcached は root ユーザで起動している.

この設定は /etc/default/rrdcached の以下の記述に従っている.

# Optional unprivileged group to run under when daemon.  If unset
# retains invocation group privileges.
#DAEMON_GROUP=_rrdcached

# Optional unprivileged user to run under when daemon.  If unset
# retains invocation user privileges.
#DAEMON_USER=_rrdcached

クライアント側は /var/run/rrdcahced.sock 経由でキャッシュサーバと通信をする

以上を踏まえて,アクセス制限は以下の2ファイルのパーミッション,owner を調整すれば良い

使い方

使い方: データベースの作成

/var/lib/rrdcached/db 以下に rrdファイルを用意するだけ

使い方:データベースへのアクセス

rrdtool のオプションで以下の二つを指定する

  • 通信用のソケット /var/run/rrdcached.sock
  • データベースのファイル名 /var/lib/rrdcached/db/データベースのファイル名

例えば

$ rrdtool fetch /var/lib/rrdcached/db/hogehoge.rrd AVERAGE 

を rrdcached 経由で実行するなら

$ rrdtool  fetch --daemon unix:/var/run/rrdcached.sock /var/lib/rrdcached/db/hogehoge.rrd  AVERAGE

と"--daemon ソケット" を付与すればよい

動作確認

rrdtool info を実行すると良い

$ rrdtool  info --daemon unix:/var/run/rrdcached.sock /var/lib/rrdcached/db/hogehoge.rrd