はじめに
Fluentd用のoutputプラグインとして「groonga outputプラグイン」というものがあります。groonga outputプラグインを使うと、Fluentdで集めたデータをGroongaに格納することができます。この記事ではgroonga outputプラグインを使ってFluentdで集めたデータをGroongaに格納する方法を説明します。
インストール
Fluentdはすでにインストールされているものとします。そのため、次の2点のインストール方法について説明します。
- Groonga
- fluent-plugin-groonga
Groonga
データの格納先であるGroongaのインストール方法を説明します。
Groongaは各種プラットフォーム向けのパッケージが揃っています。パッケージを使ったインストール方法の詳細は公式サイトのインストールドキュメントを参照してください。次のパッケージをインストールしてください。
- groonga-httpd: Groongaサーバー
例えば、Ubuntuの場合は次のようにインストールします。
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
fluent-plugin-groonga
groonga outputプラグインを提供するfluent-plugin-groongaのインストール方法を説明します。
fluent-plugin-groongaはRubyGemsとして公開されているので次のコマンドでインストールします。
sudo gem install fluent-plugin-groonga
設定
インストールが完了したので設定方法を説明します。
Groonga
Groongaはインストールするだけですぐに使える状態になっているため追加で設定する必要はありません。
(どこからでもアクセスできる状態になっているため、実運用するときは必要に応じて接続可能ホストを制限したりする必要があります。)
fluent-plugin-groonga
fluent-plugin-groongaの設定方法を説明します。
次のようにApacheのログファイルを読み込むsourceがあるとします。
<source>
type tail
path /var/log/apache2/access.log
pos_file /var/log/td-agent/apache_access.pos
tag log.apache.access
format apache2
</source>
これを同じホストで動いているGroongaに格納するには次のようなmatchを追加します。
<match log.**>
type groonga
store_table Logs
buffer_type file
buffer_path /var/log/td-agent/buffer.groonga
</match>
これでLogsテーブルの中にログが溜まっていきます。
Groongaは事前にスキーマを定義しなければいけませんが、fluent-plugin-groongaが自動でいい感じにテーブルもカラムも定義してくれます。そのため、前述の通りテーブル名だけ指定しておけばログが溜まっていきます。
格納されたログはWebブラウザーベースの管理画面で確認できます。
まとめ
Fluentdで集めたデータをGroongaに格納する方法を紹介しました。実運用するにはもっと設定が必要になるのですが、この記事では実際に試してみるための必要最小限の設定を紹介しました。実運用するときはたとえば次のような設定が必要になります。
- 各ログにタイムスタンプも入れる
- 各ログにホスト名も入れる(複数ホストからログを集める場合)
- 高速に検索できるようにインデックスを張る
- 同じようなテキストデータは共有してデータベースに格納するサイズを小さくする
fluent-plugin-groongaのリポジトリーに設定サンプルがあるので興味がある人はのぞいてみてください。
おしらせ
全文検索エンジンGroongaを囲む夕べ5
2014/11/29(土)、年に一度のいい肉の日にGroongaイベント「全文検索エンジンGroongaを囲む夕べ5」が開催されます。Groongaに興味のある方はぜひご参加ください。
Groonga Advent Calendar 2014
Groonga Advent Calendar 2014を実施します。Groonga関連情報を持っている方はぜひご参加ください。