昨年11/29に全文検索エンジンGroongaを囲む夕べ4を開催しました。発表資料へのリンクもまとめています。隔週連載Groongaも参考になりますよ。
イベントレポートも昨年末に「全文検索エンジンGroongaを囲む夕べ 4」レポートとして公開されましたね。
はじめに
オープンソースのカラムストア機能付き全文検索エンジンGroongaを公開しています。この記事を書いたときの最新のバージョンは2013年12月29日にリリースした3.1.1です。
今回は、全文検索エンジンGroongaで対応したMuninワイルドカードプラグインの紹介をします。
GroongaのMuninプラグインをワイルドカード対応した背景
全文検索エンジンであるGroongaでは、Muninプラグインのパッケージがあります。
そのあたりの導入方法については全文検索エンジンGroongaの状態をMuninプラグインで確認するにはとしてエントリを書きました。
その後、Groonga 3.1.1のリリースで該当エントリを書いたときの次の問題点をMuninワイルドカードプラグインにすることで修正しました。
- GQTPのポート番号変更に対応していない
- GQTPにしか対応していない
Muninプラグイン新旧の対応
Groonga 3.1.0以前では、次のようなMuninプラグインを提供していました。
旧プラグイン | 説明 |
---|---|
groonga_cpu_load | CPU使用率情報 |
groonga_cpu_time | 一日におけるCPU負荷情報 |
groonga_disk | テーブルのディスク使用比率情報 |
groonga_memory | メモリ使用量情報 |
groonga_n_records | レコード数情報 |
groonga_query_performance | クエリ実行時間の平均、中央値情報 |
groonga_status | statusコマンド情報 |
groonga_throughput | 実行できたクエリ数情報 |
Groonga 3.1.1以降では、GQTPだけでなく、HTTP向けのプラグインも提供するようになりました。
それにともない、個々のプラグイン名も変更しています。プラグイン名の末尾にプロトコルが付与されていることがわかります。
- groonga_cpu_load_gqtp
- groonga_cpu_time_gqtp
- groonga_disk_gqtp
- groonga_memory_gqtp
- groonga_n_records_gqtp
- groonga_query_performance_gqtp
- groonga_status_gqtp
- groonga_throughput_gqtp
- groonga_cpu_load_http
- groonga_cpu_time_http
- groonga_disk_http
- groonga_memory_http
- groonga_n_records_http
- groonga_query_performance_http
- groonga_status_http
- groonga_throughput_http
Muninワイルドカードプラグインの実体
プラグインはプロトコル別ですが、実体は一緒でシンボリックリンクで実現されています。
これは、GQTPとHTTPでそれほどプラグインそのものの内容に違いがないので、プロトコル設定で動作を切り替えられるようにしているためです。
ワイルドカードプラグインとはこのような1つのプラグインで複数のグラフの情報を収集できるプラグインのことです。
lrwxrwxrwx 1 root root 42 1月 9 11:23 groonga_cpu_load_gqtp -> /usr/share/munin/plugins/groonga_cpu_load_
lrwxrwxrwx 1 root root 42 1月 9 11:23 groonga_cpu_load_http -> /usr/share/munin/plugins/groonga_cpu_load_
lrwxrwxrwx 1 root root 42 1月 9 11:23 groonga_cpu_time_gqtp -> /usr/share/munin/plugins/groonga_cpu_time_
lrwxrwxrwx 1 root root 42 1月 9 11:23 groonga_cpu_time_http -> /usr/share/munin/plugins/groonga_cpu_time_
lrwxrwxrwx 1 root root 38 1月 9 11:23 groonga_disk_gqtp -> /usr/share/munin/plugins/groonga_disk_
lrwxrwxrwx 1 root root 38 1月 9 11:23 groonga_disk_http -> /usr/share/munin/plugins/groonga_disk_
lrwxrwxrwx 1 root root 40 1月 9 11:23 groonga_memory_gqtp -> /usr/share/munin/plugins/groonga_memory_
lrwxrwxrwx 1 root root 40 1月 9 11:23 groonga_memory_http -> /usr/share/munin/plugins/groonga_memory_
lrwxrwxrwx 1 root root 43 1月 9 11:23 groonga_n_records_gqtp -> /usr/share/munin/plugins/groonga_n_records_
lrwxrwxrwx 1 root root 43 1月 9 11:23 groonga_n_records_http -> /usr/share/munin/plugins/groonga_n_records_
lrwxrwxrwx 1 root root 51 1月 9 11:23 groonga_query_performance_gqtp -> /usr/share/munin/plugins/groonga_query_performance_
lrwxrwxrwx 1 root root 51 1月 9 11:23 groonga_query_performance_http -> /usr/share/munin/plugins/groonga_query_performance_
lrwxrwxrwx 1 root root 40 1月 9 11:23 groonga_status_gqtp -> /usr/share/munin/plugins/groonga_status_
lrwxrwxrwx 1 root root 40 1月 9 11:23 groonga_status_http -> /usr/share/munin/plugins/groonga_status_
lrwxrwxrwx 1 root root 44 1月 9 11:23 groonga_throughput_gqtp -> /usr/share/munin/plugins/groonga_throughput_
lrwxrwxrwx 1 root root 44 1月 9 11:23 groonga_throughput_http -> /usr/share/munin/plugins/groonga_throughput_
ワイルドカードプラグインかどうかはsuggestを引数にmunin-node-configureに与えることでもわかります。
% sudo munin-node-configure --suggest
[sudo] password for khayashi:
Plugin | Used | Suggestions
------ | ---- | -----------
groonga_cpu_load_ | yes | yes (gqtp http)
groonga_cpu_time_ | yes | yes (gqtp http)
groonga_disk_ | yes | yes (gqtp http)
groonga_memory_ | yes | yes (gqtp http)
groonga_n_records_ | yes | yes (gqtp http)
groonga_query_performance_ | yes | yes (gqtp http)
groonga_status_ | yes | yes (gqtp http)
groonga_throughput_ | yes | yes (gqtp http)
ワイルドカードプラグインでは、以下を満す必要があります。
- ファイル名末尾が_であること
- capabilitiesのsuggestマジックコメントがあること
- suggest引数を与えて実行するとサポート対象を出力すること
ファイル名についてはすでに述べました。マジックコメントは例えば次のような内容にします。
#!/bin/sh
#%# family=auto
#%# capabilities=autoconf suggest
suggest引数への対応では次のようにして"gqtp"と"http"に対応していることを明示します。
suggest)
echo "gqtp"
echo "http"
exit 0
;;
これで、GroongaもMuninワイルドカードプラグイン化することができました。
まとめ
今回は、Groongaで対応したMuninワイルドカードプラグインの紹介しました。
Groongaに興味を持ったなら、まずはインストールして試してみてください。
Groongaの基本的な動作を知るためのチュートリアルもあります。インストールしたら試してみてください。
Muninプラグイン関連の話はククログにもあるので、参考にしてみてください。