全文検索エンジンGroongaの状態をMuninプラグインで確認するには

> もっとGroongaを知ってもらおう!ということで週刊Groongaをはじめました。毎週木曜にGroongaやMroonga、Rroongaのトピックを投稿予定です。

今年も11/29に[全文検索エンジンGroongaを囲む夕べ4](http://atnd.org/events/43461)を開催しました。[発表資料](http://atnd.org/events/43461#document)へのリンクもまとめています。[隔週連載Groonga](http://gihyo.jp/dev/clip/01/groonga)も参考になりますよ。
イベントレポートもそろそろ公開されるはずです。楽しみですね。

# はじめに

オープンソースの[カラムストア機能付き全文検索エンジンGroonga](http://groonga.org/ja/)を公開しています。最新のバージョンは2013年11月29日にリリースした[3.1.0](http://groonga.org/ja/docs/news.html#release-3-1-0)です。

今回は、全文検索エンジンGroongaでMuninを使って状態を確認する方法を紹介します。

# GroongaのMuninプラグイン

全文検索エンジンであるGroongaでは、Muninプラグインのパッケージがあります。

たとえば、Debian系の場合次のようにしてパッケージをインストールすることができます。

```
sudo apt-get install groonga-munin-plugins
```

Red Hat系では次のようにしてパッケージをインストールすることができます。

```
sudo apt-get install groonga-munin-plugins
```

このパッケージにはいくつかプラグインが含まれています。

|プラグイン|説明|
|--------|----|
|groonga_cpu_load|CPU使用率情報|
|groonga_cpu_time|一日におけるCPU負荷情報|
|groonga_disk|テーブルのディスク使用比率情報|
|groonga_memory|メモリ使用量情報|
|groonga_n_records|レコード数情報|
|groonga_query_performance|クエリ実行時間の平均、中央値情報|
|groonga_status|statusコマンド情報|
|groonga_throughput|実行できたクエリ数情報|

# Muninプラグインのセットアップ

Muninプラグインのパッケージには不具合があってちょっと修正する必要があります。
この不具合は今月リリースする予定の3.1.1で修正の見込となっています。

では、Debian系の場合を例に具体的な修正箇所を紹介します。

## /etc/munin/plugin-conf.d/groongaを変更する

修正後の/etc/munin/plugin-conf.d/groongaの内容は次の通りです。

```
[groonga_*]
  user groonga
  group groonga
  env.PATH /usr/bin:/bin:/usr/local/bin
  env.pid_file /var/run/groonga/groonga-gqtp.pid
  env.path /var/lib/groonga/db/db
  env.host 127.0.0.1
  env.port 10043
  env.log_path /var/log/groonga/query-gqtp.log
```

MuninプラグインはGQTPプロトコルを想定しています。GQTPのポートは10043に変更されたのと、pidやログファイルのパスの修正が必要です。

|項目|修正内容|
|--------|----|
|env.pid_file|/var/run/groonga/groonga-gqtp.pidへ修正する|
|env.port|10041から10043へ修正する|
|env.log_path|/var/log/groonga/query-gqtp.logへ修正する|


## プラグインへのシンボリックリンクを張る

パッケージをインストールしただけでは、Muninプラグインとしては認識されません。
そのため、次のようにしてプラグインとしてまず認識させる必要があります。

Groongaのプラグインは/usr/share/groonga/munin/plugins以下にインストールされますが、プラグインとして認識されるかどうかは/usr/share/munin/plugins/にあるかどうかで判断されるためです。

```
sudo ln -sf /usr/share/groonga/munin/pluings/groonga_cpu_load /usr/share/munin/plugins/groonga_cpu_load
sudo ln -sf /usr/share/groonga/munin/pluings/groonga_cpu_time /usr/share/munin/plugins/groonga_cpu_time
sudo ln -sf /usr/share/groonga/munin/pluings/groonga_disk /usr/share/munin/plugins/groonga_disk
sudo ln -sf /usr/share/groonga/munin/pluings/groonga_memory /usr/share/munin/plugins/groonga_memory
sudo ln -sf /usr/share/groonga/munin/pluings/groonga_n_records /usr/share/munin/plugins/groonga_n_records
sudo ln -sf /usr/share/groonga/munin/pluings/groonga_query_performance /usr/share/munin/plugins/groonga_query_performance
sudo ln -sf /usr/share/groonga/munin/pluings/groonga_status /usr/share/munin/plugins/groonga_status
sudo ln -sf /usr/share/groonga/munin/pluings/groonga_throughput /usr/share/munin/plugins/groonga_throughput
```

プラグインとして認識されたかどうかは、次のようにしてmunin-node-configureを実行すると確認できます。

```zsh
% sudo munin-node-configure |grep groonga
groonga_cpu_load           | no  |                                        
groonga_cpu_time           | no  |                                        
groonga_disk               | no  |                                        
groonga_memory             | no  |                                        
groonga_n_records          | no  |                                        
groonga_query_performance  | no  |                                        
groonga_status             | no  |                                        
groonga_throughput         | no  |                  
```

## プラグインを有効にする

プラグインとして認識されるようになりましたが、まだ有効にはなっていません。
そこで、次のようにしてプラグインを有効化します。

```zsh
% sudo -H munin-node-configure --shell --remove-also | sudo -H sh
```

有効化できたかは、再度munin-node-configureを使って確認できます。


```zsh
% sudo munin-node-configure |grep groonga
groonga_cpu_load           | yes  |                                        
groonga_cpu_time           | yes  |                                        
groonga_disk               | yes  |                                        
groonga_memory             | yes  |                                        
groonga_n_records          | yes  |                                        
groonga_query_performance  | yes  |                                        
groonga_status             | yes  |                                        
groonga_throughput         | yes  |          
```

最後にmunin-nodeを再起動しておきます。

```zsh
% sudo service munin-node restart
munin-node stop/waiting
munin-node start/running, process 21324
```

# 結果のグラフを確認しよう

Muninが生成するレポートは/var/cache/munin/www以下に生成されます。

例えば、ディスク使用量についてはこんな感じです。有効化してすぐなので、データが蓄積されていませんが、雰囲気はつかめるでしょう。

![](http://packages.groonga.org/qiita/groonga_disk-day.png)

# まとめ

今回は、Groongaの状態をMuninを使って確認する方法を紹介しました。

Groongaに興味を持ったなら、まずは[インストール](http://groonga.org/ja/docs/install.html)して試してみてください。

Groongaの基本的な動作を知るための[チュートリアル](http://groonga.org/ja/docs/tutorial.html)もあります。インストールしたら試してみてください。