tl;dr
引き続き mruby を触ってみるということで、fluentd にログをポストする fluent-logger-mruby を触ってみる。
参考
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 のテストを書けるようになりたい(テストを書く方法を知りたい)
以上。