NorikraのAPIを叩くmrbgemを書いて、mod_mrubyで使う
FluentdからNorikraにサーバの各種ログを流し込んで解析する、というのは、 割とよくあるNorikraのユースケースかと思います。
Norikra+FluentdでDoS攻撃をブロックする仕組みを作ってみた | Developers.IO
FluentdとNorikraで異常アクセス検知を行う | ピコもん開発ブログ
これらは、テキストとして出力されているログファイルをFluentdで取り込んで送信となりますが、 ApacheやNginxのアクセスログをNorikraに溜め込むのなら、 以下のmrbgemをmod_mrubyやnginx_mrubyに組み込んでおけばできますよ!
READMEにも書いていますが、CRuby版からのポートなので詳しいAPI情報はそちらをご参照ください。
インストール
インストールは、通常通り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をていぎします。
次に、以下のような感じのmod_mrubyの設定を書いて、Apacheを立ち上げます。 情報を投げる先のNorikraサーバのホスト名とポート番号を指定して、アクセス時間/メソッド/URIをNorikraに投げています。
このように、イベントを投げる際にmod_mrubyで取れる種々の情報を利用することができるので、 様々な側面から分析する際に役立つように思っています。
あとは、なんらかの手段でApacheにアクセスしてみます。
curl http://localhost/
このあと、Norikraのコンソールからイベント数を確認!!
アクセス数分増加していました!
(以下のスクリーンショットでは、50。)
mod_mrubyは本当に多くのサーバ情報が手軽に取れますので、 mruby-norikra-clientと組み合わせて、工夫次第で興味深い分析ができるかも。