LoginSignup
5

More than 5 years have passed since last update.

Norikraを触ってみた

Last updated at Posted at 2014-12-07

はじめに

前々から気になっていたnorikraを弄る時間ができたので弄ってみました。
インストールしてnginxのログをfluentd経由でnorikraに入れるところまでを記載しておきます。

norikraとは!?という質問には触り始めなのであんまりわかっていないですが、個人的には以下が特徴だと思っています。

  • JSON形式のデータをリアルタイムで処理をするOSS
  • SQLライクな記述で取得するデータを選択可能
  • JRubyで記述されている
  • GUIがある

以下参考にさせて頂きました。

今回の構成

Nginx(fluentd)サーバー<->Norikraサーバー

の二台構成。

環境情報

  • Nginxサーバー
・OS: Ubuntu14.04
・Nginx: nginx/1.4.6
・Ruby: ruby 2.1.5
・fluentd: 0.10.57
  • Norikraサーバー
・OS: Ubuntu14.04
・Ruby: jruby-1.7.16.1
・Norikra: 1.1.1

Step1: Rbenvのインストール(Nginxサーバー, Norikraサーバー)

まずはRbenvをインストールします。

$ sudo groupadd -g 1001 rbenv # Rbenv利用グループ
$ sudo groupadd -g 1002 norikra # Norikra利用グループ
$ sudo usermod -G rbenv,norikra ${username}
$ sudo apt-get update
$ sudo apt-get install gcc make openssl libssl-dev git openjdk-7-jre g++ ruby-dev
$ cd /opt
$ sudo git clone git://github.com/sstephenson/rbenv.git
$ sudo mkdir -p /opt/rbenv/shims /opt/rbenv/versions
$ sudo chgrp -R rbenv rbenv
$ sudo git clone git://github.com/sstephenson/ruby-build.git /opt/rbenv/ruby-build
$ cd /opt/rbenv/ruby-build
$ sudo ./install.sh
/etc/profile.d/rbenv.sh
export RBENV_ROOT="/opt/rbenv"
export PATH="$RBENV_ROOT/bin:$PATH"
eval "$(rbenv init -)"
$ source /etc/profile.d/rbenv.sh
$ rbenv --version
rbenv 0.4.0-129-g7e0e85b
$

さてこれでrbenvが使えるようになりました。

Step2: JRubyのインストール(Norikraサーバー)

JRubyをインストールします。

$ rbenv install --list
  jruby-1.7.14
  jruby-1.7.15
  jruby-1.7.16
  jruby-1.7.16.1
  jruby-9.0.0.0-dev
  jruby-9.0.0.0+graal-dev
  jruby-9000-dev
  jruby-9000+graal-dev
  maglev-1.0.0
$ # 最新版の安定版をインストールします。
$ sudo env RBENV_ROOT=$RBENV_ROOT PATH=$PATH rbenv install -v jruby-1.7.16.1
$ rbenv global jruby-1.7.16.1
$ ruby --version
jruby 1.7.16.1 (1.9.3p392) 2014-10-28 4e93f31 on OpenJDK 64-Bit Server VM 1.7.0_65-b32 +jit [linux-amd64]
$

Step3: Norikraインストール(Norikraサーバー)

$ gem install norikra --no-ri --no-rd

Step4: Norikra起動(Norikraサーバー)

$ sudo mkdir -p /var/log/norikra /etc/norikra /var/run/norikra
$ sudo chgrp norikra /var/log/norikra /etc/norikra /var/run/norikra
$ norikra start -d -l /var/log/norikra

正常にインストールできてればhttp://${norikra_server}:26578でnorikraのConsole画面にアクセスできます。

norikra_1.png

Step5: Nginx, Ruby, Fluentdのインストール(Nginxサーバー)

$ sudo apt-get install nginx
Ruby2.1.5インストール
$ rbenv install --list
  2.1.0
  2.1.1
  2.1.2
  2.1.3
  2.1.4
  2.1.5
  2.2.0-dev
  2.2.0-preview1
  2.2.0-preview2
$ sudo env RBENV_ROOT=$RBENV_ROOT PATH=$PATH rbenv install -v 2.1.5
$ rbenv global 2.1.5
$ ruby --version
ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-linux]
$
$ sudo env PATH=$PATH gem install fluentd
$ sudo env PATH=$PATH fluent-gem install fluent-plugin-norikra --no-ri --no-rdoc # Norikraのプラグインインストール
$ sudo env PATH=$PATH fluentd --setup /etc/fluent # Configファイルなどの作成

Step6: Fluentd設定(Nginxサーバー)

Step5で作成したfluentdの設定ファイルを編集してNginxのログがnorikraに飛ぶように設定します。

$ sudo mkdir -p /var/log/fluent
$ sudo chmod +x /var/log/fluent
/etc/fluent/fluent.conf
# Tailing the Nginx Log
<source>
  type tail
  path /var/log/nginx/access.log
  pos_file /var/log/fluent/nginx-access.pos
  tag norikra.nginx
  format nginx
</source>
<match norikra.*>
  type norikra
  norikra ${norikra_server}:26571
  remove_tag_prefix norikra
  target_map_tag    true
</match>
$ sudo env PATH=$PATH fluentd -c /etc/fluent/fluent.conf -vv &

Step7: アクセスしてみる - 1(Nginxサーバー)

以下のコマンドでNginxにアクセスしてみます。

$ curl http://localhost

Step8: 確認する/クエリの設定 - 1(Norikraサーバー)

Norikraサーバーでアクセスを確認してみます。
設定が正常に完了していたら、Target=nginxが自動で作成されていることがわかると思います。
Nginxログの各種fieldも自動で設定されています。

norikra_2.png

ただし、今の設定では取得したデータに対するクエリを指定していませんので送られてきたデータに対して何もしません。

Consoleでクエリを設定して、送られてきたデータを表示させてみます。せっかくなのでResponseコードが200以外のデータだけを引っかけるクエリを指定してみます。

norikra_3.png

私の環境では*を指定するとエラーが出たのでここではカラムを個別に指定しています。

Step9: アクセスしてみる - 2(Nginxサーバー)

以下のコマンドでNginxにアクセスします。
ここでは200OK以外のレスポンスを得たいので存在しないパスを指定します。

$ curl http://localhost
$ curl http://localhost
$ curl http://localhost/no_content/

Step10: 確認してみる - 2(Norikraサーバー)

もう一度NorikraのConsoleにアクセスしてみます。

三回アクセスしましたが、eventは一回しか発生していないことがわかります。

norikra_4.png

404 Not Foundのレスポンスが発生していることがわかります。

norikra_5.png

おわりに

まだ触り始めなので理解が不十分だと思いますが、norikraを利用することでSQLライクの方法でイベントを定義でき、イベントとアクションを紐付けることで色々と簡単に自動化ができるのかな思いました。

これを一段発展させ何かしらのシステムを作りたいですね^^

おしまい。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5