はじめに
GroongaにはWebブラウザーで動く管理ツールが付属しています。GroongaをHTTPサーバーとして起動してhttp://localhost:10041/
にアクセスすると使えます。詳細はGroongaでブラウザベースの管理ツールを使うにはを参照してください。
この管理ツールはスキーマの定義からレコードの追加・削除・更新、さらに、細かく検索条件をした検索まで一通りできます。この管理ツールは「コマンドでできることをWebブラウザー上でも実現できる」というところを目指しているため、使うにはGroongaの知識が必要でした。
この管理ツールを開発した頃と今では事情が違ってきています。端的に言うとGroongaの細かいことを知らなくてもGroongaを使えるようになってきました。これは周辺ツールが成熟してきたからです。例えば、Fluentdで集めたデータをGroongaに格納する方法があります。他にも、スキーマを気にせずにRubyからGroongaを使えるGrnMiniというライブラリーがあります。上級者向けの使い方ですが、Mroongaを使うことでSQLでスキーマ定義やデータの管理を実施し、検索やGroongaのデータベースの調査には直接Groongaを使う、ということもできます。
このため、Webブラウザーで動く管理ツールも「Groongaの細かいことを知らなくても使える」方向で作りなおしています。それが、今回紹介するGroonga Adminです。
設定方法
Groonga Adminはすべてクライアントサイドの技術(HTMLとCSSとJavaScript)で実装しているため、サーバーサイドのアプリケーションを用意する必要はありません。GroongaのAPIを提供しているHTTPサーバーでGroonga Adminを配信すればすぐに使えます。
Ubuntu 14.10での使い方は次の通りです。
まず、Groongaサーバーをインストールします。(詳細や他の環境でのインストール方法は公式ドキュメントのインストール方法を参照してください。)
sudo apt-get -y install software-properties-common
sudo add-apt-repository -y universe
sudo add-apt-repository -y ppa:groonga/ppa
sudo apt-get update
sudo apt-get -y install groonga-httpd
次にHTTPサーバーでGroonga Adminを配信するように設定を変更します。
rm -rf /tmp/groonga-admin
mkdir -p /tmp/groonga-admin
cd /tmp/groonga-admin/
wget http://packages.groonga.org/source/groonga-admin/groonga-admin.tar.gz
tar xvf groonga-admin.tar.gz
sudo rm -rf /usr/share/groonga/html/groonga-admin
sudo cp -r groonga-admin-*/html /usr/share/groonga/html/groonga-admin
sudo sed -i'' -e 's,/admin;,/groonga-admin;,' /etc/groonga/httpd/groonga-httpd.conf
sudo service groonga-httpd restart
これで動きます。http://localhost:10041/にアクセスしてみてください。次のような画面がでているはずです。
まだ1つもテーブルがないので味気ない画面です。
fluent-plugin-groongaの設定サンプルを使ってテーブル作成・データ投入をします。
fluent-plugin-groongaの設定方法は次の通りです。
sudo apt-get install -y ntp
curl -L http://toolbelt.treasuredata.com/sh/install-ubuntu-trusty-td-agent2.sh | sh
sudo td-agent-gem install fluent-plugin-forest fluent-plugin-parser fluent-plugin-record-reformer fluent-plugin-groonga
sudo mkdir -p /var/spool/td-agent/buffer
sudo chown -R td-agent:td-agent /var/spool/td-agent/
cd /tmp
curl -O https://raw.githubusercontent.com/groonga/fluent-plugin-groonga/master/sample/store-syslog.conf
sudo cp store-syslog.conf /etc/td-agent/td-agent.conf
sudo sed -i'' -e 's/messages/syslog/g' /etc/td-agent/td-agent.conf
sudo adduser td-agent adm
sudo service td-agent restart
いくつかsyslogにログを出力してGroongaにデータを入れましょう。
logger test
logger hello
logger world
logger --id test message
logger --tag test tag
管理ツールをリロードすると次のようにテーブルが増えています。これは、fluent-plugin-groongaが自動でスキーマを定義してデータを投入してくれたからです。
「Logs」テーブルを選択するとレコードを確認できます。
このページでは、Groongaの検索コマンドのパラメーターなど細かいことを知らなくても検索機能を使ってレコードを絞り込んだり、ドリルダウンしてデータの傾向を確認したりすることができます。
使い方
使い方をいくつか紹介します。
基本的にすべての操作はインタラクティブに反映されるのでどのような変化になるかをすぐに確認しながら操作することができます。
全文検索
一番上のテキストボックスで全文検索できます。全文検索可能なカラム(全文検索用のインデックスが張られているカラム)は自動的に検出され、テキストボックスの上に並んでいます。チェックボックスを外すとそのカラムは検索しません。
表示カラムの選択
カラム数が多いと一覧性が悪くなります。そのときは、必要なカラムだけ表示することで一覧性をよくすることができます。
サイドバーにあるチェックボックスで表示するカラムを選択できます。
リストビュー
カラム数を減らせない場合はレコードの表示方法を「表」ではなく「リスト」にすることで改善できるかもしれません。
リスト表示にすると「カラム名」と「カラム値」の縦・横が入れ替わるので狭い幅でレコードを表示できます。(その代わり、縦が長くなります。)
表示方法はタブで切り替えることができます。
ドリルダウン
レコードをグループ化することでデータの傾向をわかりやすくすることができます。このグループ化の機能を「ファセット」や「ドリルダウン」と呼びますが、Groongaでは「ドリルダウン」という呼び方を使っています。
サイドバーのカラムリストにドリルダウンをするかどうかというチェックボックスがついています。チェックを入れると、サイドバーの下の方にドリルダウン結果がでます。
この例では、「vagrant」関連のログと「dhclient」関連のログが多めという傾向がわかります。
ソート
レコード一覧部分のヘッダーにはカラム毎にソート順を指定するボタンがついています。ここをクリックすると昇順・降順・指定なしとソート順が変わっていきます。
最新のログに注目したい場合はタイムスタンプで降順でソートする、という使い方ができます。
その他
他にも、次のような機能があります。
-
select
コマンドでのコマンドラインと生のGroongaのレスポンスをpretty printして表示する機能(レコード一覧の上のタブの「Raw」を選ぶと見れます。) - 時間の範囲で絞り込む機能(全文検索用のテキストボックスの下にあります。)
- ページネーション機能(レコード一覧の上下にあります。)
- 現在の検索条件をブックマークする機能(サイドバーの上にあるボタンを押すと検索条件を示したURLになるので、それをWebブラウザーの機能でブックマークしてください。)
注意
Groonga Adminはまだ開発途中で既存の管理ツールを置き換えるところまでいっていません。例えば、スキーマ管理機能やレコード管理機能がありません。
そのため、まだ、Groonga本体と一緒に配布しておらず、別で配布しています。今後、必要な機能が追加されていき、既存の管理ツールを置き換えられるところまでいったらGroonga本体と一緒に配布する予定です。
JavaScriptが得意な方で開発に協力したい方はgroonga/groonga-adminのIssuesを確認してください。
まとめ
Groongaの細かいことを知らなくても使えるGroonga AdminというWebブラウザー上でGroongaを管理できるツールを紹介しました。現時点では検索機能しかなく、スキーマやレコードの管理はできませんが、検索機能はGroongaの細かいことを知らなくても使えるはずです。Groongaのデータベース内のレコードを参照したい方はぜひ試してみてください。