Help us understand the problem. What is going on with this article?

nginxベースのgroongaサーバーでログ関連のカスタマイズをするには

More than 5 years have passed since last update.

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

gihyo.jpさんでgroongaの隔週連載が最終回を迎えました。groongaの最新情報と今後に興味があれば一読をおすすめします。

第1回から第10回までの過去記事については、隔週連載groongaのページを参照してください。

今年も11/29に全文検索エンジンgroongaを囲む夕べ 4を開催することになりました。参加登録はお早めに! 発表者も募集しています。

はじめに

オープンソースのカラムストア機能付き全文検索エンジンgroongaを公開しています。最新のバージョンは2013年8月29日にリリースした3.0.7です。

今回は、nginxベースのgroongaサーバーに追加されたログ関連のディレクティブを使う方法を紹介します。

もうひとつのgroongaサーバー

groongaのサーバーを立てるときには、いくつか選択肢があります。プロトコル別に分けるとGQTPかHTTPを使うかという選択肢があります。また、HTTPを使うにしても、groongaコマンドに実装されているサーバー機能を使うか、あるいはnginxベースで実装されたgroonga-httpdコマンドを利用するという選択肢があります。

いずれにせよ、それぞれの目的のために個別のパッケージが存在しています。

  • groonga-server-gqtp (GQTPという専用プロトコル)
  • groonga-server-http (HTTP)
  • groonga-httpd (HTTP)

参考までにgroongaとgroonga-httpdのどっちを使ったらいいのか判断に迷ったら、比較したドキュメントを参照してみてください。

新規追加されたログ関連のディレクティブとは

groonga 3.0.7では、このgroonga-httpdにログ関連のカスタマイズを行うためのディレクティブが追加されました。

  • groonga_log_path
  • groonga_log_level

従来はログ関連のカスタマイズができなかったので、所定のパス(/var/log/groonga/httpd/groonga.log)に固定のログレベル(NOTICE)でログが出力されるようになっていました。

groonga-httpdではコンテキストに応じて複数のデータベースが使えたり、アクセスするときのプレフィクスを変更できたりするのに、ログは決め打ちなので、個別にログをとることができなかった問題が解消されたことになります。

groonga-httpdの設定ファイルはgroonga-httpdパッケージをインストールすると雛形の設定ファイルが/etc/groonga/httpd/groonga-httpd.confに生成されます。

groonga_log_path

ログの保存先を指定するディレクティブです。従来は、次のように決め打ちだったのが、

http {
  ...
  groonga_log_path /var/log/groonga/httpd/groonga.log;
  ...
}

次のようにlocationごとにも設定できるようになりました。

http {
  ...
  location /d/ {
    groonga_log_path /var/log/groonga/httpd/groonga-location-d.log;
  }
  ...
}

locationコンテキストではgroongaのデータベースを個別に指定できるので、データベースごとのログ保存先を変更できることになります。
これまで一緒くたになっていたのを分けることができますね。

ディレクティブの詳細については、groonga_log_pathを参考にしてください。

groonga_log_level

ログレベルをカスタマイズするためのディレクティブです。従来は、次のように決め打ちだったのが、

http {
  ...
  groonga_log_level notice;
  ...
}

ロケーションごとにも指定できるようになりました。

http {
  ...
  location /d/ {
    groonga_log_level debug;
  }
  ...
}

locationコンテキストではgroongaのデータベースを個別に指定できるので、データベースごとのログレベルを変更できることになります。

ログレベル自体は次のものを指定できます。

  • emergency
  • alert
  • critical
  • error
  • warning
  • notice
  • debug
  • dump
  • none

デフォルトのログレベルはnoticeであり、問題があったデータベースだけdebugにするといったことができるようになりました。
ログの保存先指定と組合せることで切り分けしやすくなりました。

ディレクティブの詳細については、groonga_log_levelを参考にしてください。

まとめ

今回は、nginxベースのgroongaサーバーに追加されたログ関連のディレクティブを使う方法を紹介しました。groongaを初めて使う場合にはあまり関係ありませんが、運用していくにあたってより高機能なgroongaサーバーを使いたい場合には、groonga-httpdが選択肢となります。

groongaに興味を持ったなら、まずはインストールして試してみてください。

groongaの基本的な動作を知るためのチュートリアルもあります。インストールしたら試してみてください。

groonga
Groonga関連情報を提供します。Groongaだけでなく、RroongaやMroongaなどの情報も提供します。
http://groonga.org/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away