groonga用Muninプラグイン - 2010-05-07 - ククログ

ククログ

株式会社クリアコード > ククログ > groonga用Muninプラグイン

groonga用Muninプラグイン

まだリリース版に入っていませんが、groongaのリポジトリにはMuninプラグインが入っています。

プラグインは5種類あり、それぞれ以下の値をグラフにします。

  • groonga_cpu_load: groongaサーバのCPU使用率をグラフにします。
  • groonga_cpu_time: groongaサーバがCPUを使った時間をグラフにします。
  • groonga_memory_usage: groongaサーバが使用しているメモリをグラフにします。
  • groonga_n_records: 各テーブルのレコード数をグラフにします。
  • groonga_status: groonga内部でのメモリ割り当て数をグラフ にします。(デバッグ用。groonga内部でメモリリークしていないかを 確認するときなどに使う。)

グラフの実例: rurema.clear-code.comのもの

必ずしもすべてのプラグインを使った方がよいというわけではありません。ユースケース毎に利用した方がよいプラグインは以下の通りです。

groongaサーバを利用している場合

  • groonga_cpu_load
  • groonga_cpu_time
  • groonga_memory_usage
  • groonga_n_records

rroongaで直接データベースを操作するなどgroongaサーバを利用していない場合

るりまサーチはこのケースです。

  • groonga_n_records

groongaサーバを利用していて、groonga内部にも手を入れている場合

  • groonga_cpu_load
  • groonga_cpu_time
  • groonga_memory_usage
  • groonga_n_records
  • groonga_status

インストール方法

これらのプラグインは、groonga(のHEAD)をインストールすると$PREFIX/share/groonga/munin/plugins/以下にインストールされます。例えば、以下のようにインストールした場合は$HOME/local/share/groonga/munin/plugins/以下にインストールされます。

% git clone git://github.com/groonga/groonga.git
% cd groonga
% ./autogen.sh
% ./configure --prefix=$HOME/local
% make
% make install

まず、インストールされたプラグインのシンボリックリンクをMuninのプラグイン置き場へ置きます。Debian GNU/Linuxでは/usr/share/munin/plugins/がMuninのプラグイン置き場なので以下のようになります。

% cd /usr/share/munin/plugins
% sudo ln -fs ~/local/share/groonga/munin/plugins/* ./

groonga_n_recordsとgroonga_statusはRubyで書かれていて、JSONライブラリを必要とします。これらのプラグインを使う場合はRubyとRubyのJSONライブラリをインストールしておく必要があります。Debian GNU/Linuxの場合は以下のようにインストールできます。

% sudo aptitude -V -D -y install libjson-ruby

設定方法

次に、プラグインの設定をします。Debian GNU/Linuxであれば、以下のような内容の/etc/munin/plugin-conf.d/groonga.confを作成します。(groongaサーバを起動していて、起動中のgroongaサーバのプロセスIDが/var/run/groonga/groonga.pidに書いてある場合。)

[groonga_*]
  env.pid_file /var/run/groonga/groonga.pid

例えば、以下のように起動すると、/var/run/groonga/groonga.pidにプロセスIDが記録されます。

% sudo mkdir -p /var/run/groonga
% sudo chown groonga:groonga /var/run/groonga
% groonga -d /var/lib/groonga/db 2>/var/run/groonga/groonga.pid

この設定をすることで、以下の3つのプラグインを利用できます。

  • groonga_cpu_load
  • groonga_cpu_time
  • groonga_memory_usage

また、gqtp(groonga独自プロトコル)でgroongaサーバを起動していれば以下のプラグインも利用できます。

  • groonga_n_records
  • groonga_status

もし、標準以外のポートでgroongaサーバを起動しているときはenv.portも設定する必要があります。以下はgroongaサーバを20041番ポートで起動している場合の例です。

[groonga_*]
  env.port 20041

rroongaなど直接データベースを操作している場合は、同じデータベースを指定してgroongaサーバを起動してください。groongaは複数のプロセスで同じデータベースを操作することができるので、rroongaで操作しているデータベースの内容をgroongaサーバから参照することも問題なくできます。

例えば、~/local/var/lib/groonga/dbにデータベースを置いている場合は以下のようにして、Munin用にgroongaサーバを起動できます。

% groonga -i 127.0.0.1 -d ~/local/var/lib/groonga/db

上記のように/usr/bin以外の場所にgroongaをインストールした場合はenv.groongaでgroongaコマンドのパスを指定します。

[groonga_*]
  env.groonga /home/groonga/local/bin/groonga

プラグインの有効化

設定ファイルを作成したら必要なものだけ有効にします。

これらのプラグインはautoconfに対応しているので(参考: Muninプラグインの作り方)、以下のコマンド(Debian GNU/Linuxの場合)で必要なものだけインストールできます。

% sudo -H /usr/sbin/munin-node-configure --shell --remove-also | sudo -H sh

munin-nodeの再起動を忘れないようにしましょう。

% sudo /etc/init.d/munin-node restart

まとめ

最近追加されたgroonga用のMuninプラグインのインストール方法を紹介しました。

groonga_memoryなどはgroonga専用ではなく、もっと汎用的に利用できます。groongaのMuninプラグインを参考にするなど、自分用のMuninプラグインを作ってみてはいかがでしょうか。

あわせて読みたい: Muninプラグインの作り方