ようへいの日々精進XP

よかろうもん

mruby の fluent-logger を使ってみた

tl;dr

引き続き mruby を触ってみるということで、fluentd にログをポストする fluent-logger-mruby を触ってみる。


参考

github.com

y-ken.hatenablog.com


memo

fluent-logger-mruby の準備

README.md をご一読下さい。

fluentd の準備

HTTP input と forward input で準備しておく。

<source>
  type forward
  port 24224
  bind 0.0.0.0
</source>

<source>
  type http
  port 18888
  bind 0.0.0.0
  body_size_limit 32m
  keepalive_timeout 10s
</source>

<match *.**>
  type stdout
</match>

以下のように起動する。

$ fluentd -c test.conf -l debug.log &

mruby-sinatic の準備

せっかくなので Sinatra の mruby 版(を目指している?)mruby-sinatic で立ち上げた Web アプリケーションのログ(POST されたデータをログ)に流してみたい。

  • murby-sinatic のインストール(build_config.rb に記載して make する)
(snip)

  conf.gem :git => 'https://github.com/mattn/mruby-sinatic.git'

(snip)
  • しなちくアプリ(fluentd の http input Plugin を使う場合)
post "/add" do |r, param|
  log = Fluent::Logger.new(nil, :protocol=> 'http', :host=> '127.0.0.1', :port=> '18888')
  log.post('test.hoge', {"user" => param['user'], "message" => param['message']})
  param['user']
  param['message']
end

Sinatic.run
  • しなちくアプリ(fluentd の forward input Plugin を使う場合)
post "/add" do |r, param|
  log = Fluent::Logger.new(nil, :protocol=> 'tcp', :host=> '127.0.0.1', :port=> '24224')
  log.post('test.hoge', {"user" => param['user'], "message" => param['message']})
  param['user']
  param['message']
end

Sinatic.run
  • しなちくアプリ(タグにプレフィックスを付ける場合)
post "/add" do |r, param|
  log = Fluent::Logger.new(param['tag'], :protocol=> 'http', :host=> '127.0.0.1', :port=> '8888')
  log.post('test.hoge', {"user" => param['user'], "message" => param['message']})
  param['user']
  param['message']
end

Sinatic.run
  • しなちく起動
$ mruby sitatic.rb &

しなちくログ

  • しなちくアクセス
$ curl -X POST localhost:8888/add -d 'message=foo' -d 'user=bar'
$ curl -X POST localhost:8888/add -d 'message=foo' -d 'user=bar'
$ curl -X POST localhost:8888/add -d 'message=foo' -d 'user=bar'
  • しなちくログ
2015-10-30 07:57:01 +0900 test.hoge: {"message":"foo","user":"bar"}
2015-10-30 07:57:03 +0900 test.hoge: {"message":"foo","user":"bar"}
2015-10-30 07:57:05 +0900 test.hoge: {"message":"foo","user":"bar"}
  • しなちくアクセス(tag プレフィックス付き)
$ curl -X POST localhost:8888/add -d 'message=foo' -d 'user=bar' -d 'tag=sinatic'
$ curl -X POST localhost:8888/add -d 'message=foo' -d 'user=bar' -d 'tag=sinatic'
$ curl -X POST localhost:8888/add -d 'message=foo' -d 'user=bar' -d 'tag=sinatic'
  • しなちくログ(tag プレフィックス付き)
2015-10-30 08:04:59 +0900 sinatic.test.hoge: {"message":"foo","user":"bar"}
2015-10-30 08:05:01 +0900 sinatic.test.hoge: {"message":"foo","user":"bar"}
2015-10-30 08:05:02 +0900 sinatic.test.hoge: {"message":"foo","user":"bar"}

以上

  • mruby 楽しい
  • fluent-logger-mruby にパッチを送ったら取り込んで頂いて嬉しかった(有難うございましたm(__)m)
  • mrbgems のテストを書けるようになりたい(テストを書く方法を知りたい)

以上。