NorikraのAPIを叩くmrbgemを書いて、mod_mrubyで使う

FluentdからNorikraにサーバの各種ログを流し込んで解析する、というのは、 割とよくあるNorikraのユースケースかと思います。

Norikra+FluentdでDoS攻撃をブロックする仕組みを作ってみた | Developers.IO

Fluentd + Elasticsearch + Kibana + Norikra+ Zabbixを使ってOpenStackのログ解析してみた | テクノロジーコラム | コラム・ブログ | NTTソフトウェア株式会社

ログ解析にNorikraを使ってみた - hase log

FluentdとNorikraで異常アクセス検知を行う | ピコもん開発ブログ

これらは、テキストとして出力されているログファイルをFluentdで取り込んで送信となりますが、 ApacheやNginxのアクセスログをNorikraに溜め込むのなら、 以下のmrbgemをmod_mrubyやnginx_mrubyに組み込んでおけばできますよ!

READMEにも書いていますが、CRuby版からのポートなので詳しいAPI情報はそちらをご参照ください。

github.com

インストール

インストールは、通常通りbuild_config.rbに依存gemを追記します。

git clone https://github.com/matsumoto-r/mod_mruby
cd mod_mruby
vim build_config.rb

sh test.sh
sh build.sh
make && make install

使ってみる

まずは、Norikaraサーバのほうに、アクセス時間メソッドURIを受け取る簡単なTargetおよびそれらをselectするQueryをていぎします。

f:id:ujun:20151008064126p:plain

次に、以下のような感じのmod_mrubyの設定を書いて、Apacheを立ち上げます。 情報を投げる先のNorikraサーバのホスト名とポート番号を指定して、アクセス時間/メソッド/URIをNorikraに投げています。

このように、イベントを投げる際にmod_mrubyで取れる種々の情報を利用することができるので、 様々な側面から分析する際に役立つように思っています。

あとは、なんらかの手段でApacheにアクセスしてみます。

curl http://localhost/

このあと、Norikraのコンソールからイベント数を確認!!

アクセス数分増加していました!

(以下のスクリーンショットでは、50。)

f:id:ujun:20151008071237p:plain

mod_mrubyは本当に多くのサーバ情報が手軽に取れますので、 mruby-norikra-clientと組み合わせて、工夫次第で興味深い分析ができるかも。