標準で入っているin_httpとは違って,Pumaと呼ばれるWebサーバベースのHTTP(S)でのリクエストを受け付けるInputプラグイン書きました.
使い方
fluent-gemでインストール.
1
|
|
in_httpとほぼ同じように動きますが,独自でHTTPリクエストをパースしてないので,keepaliveやボディサイズチェック用のオプションはありません.その代わりPuma関係のオプションが増えてます(README参照).
一番の違いは,HTTPSをサポートしている所です.use_ssl
とssl_keys
を使うことで,HTTPSとして立ち上がります.
1 2 3 4 5 6 |
|
パフォーマンス
手元のMBPで試して見たら,HTTPはin_httpより少し速かった.HTTPSは当たり前ですがガクッと落ちます.
クライアントはRubyのnet/http
を使って,小さめのjsonをapplication/json
で送ってます.
- in_http
平均2400 events/secくらい.
2014-07-20 19:02:30 +0900 [info]: plugin:out_flowcounter_simple count:2318 indicator:num unit:second
2014-07-20 19:02:31 +0900 [info]: plugin:out_flowcounter_simple count:2420 indicator:num unit:second
2014-07-20 19:02:32 +0900 [info]: plugin:out_flowcounter_simple count:2383 indicator:num unit:second
2014-07-20 19:02:33 +0900 [info]: plugin:out_flowcounter_simple count:2399 indicator:num unit:second
2014-07-20 19:02:34 +0900 [info]: plugin:out_flowcounter_simple count:2382 indicator:num unit:second
- in_http_puma
平均2500 events/secくらい.Ojを使ったらもっと速くなるかと思ったけど,ほぼ誤差の範囲だった.
2014-07-20 19:01:12 +0900 [info]: plugin:out_flowcounter_simple count:2472 indicator:num unit:second
2014-07-20 19:01:13 +0900 [info]: plugin:out_flowcounter_simple count:2550 indicator:num unit:second
2014-07-20 19:01:14 +0900 [info]: plugin:out_flowcounter_simple count:2294 indicator:num unit:second
2014-07-20 19:01:15 +0900 [info]: plugin:out_flowcounter_simple count:2537 indicator:num unit:second
2014-07-20 19:01:16 +0900 [info]: plugin:out_flowcounter_simple count:2538 indicator:num unit:second
- in_http_puma with VERIFY_NONE client
平均400 events/secくらい.けどVERIFY_NONEはほとんど本番では使われないので参考程度.
2014-07-20 19:04:06 +0900 [info]: plugin:out_flowcounter_simple count:406 indicator:num unit:second
2014-07-20 19:04:07 +0900 [info]: plugin:out_flowcounter_simple count:365 indicator:num unit:second
2014-07-20 19:04:08 +0900 [info]: plugin:out_flowcounter_simple count:400 indicator:num unit:second
2014-07-20 19:04:09 +0900 [info]: plugin:out_flowcounter_simple count:399 indicator:num unit:second
2014-07-20 19:04:10 +0900 [info]: plugin:out_flowcounter_simple count:400 indicator:num unit:second
- in_http_puma with VERIFY_PEER client
平均320 events/secくらい.高負荷環境で無ければ大丈夫かな…?
2014-07-20 19:05:18 +0900 [info]: plugin:out_flowcounter_simple count:329 indicator:num unit:second
2014-07-20 19:05:19 +0900 [info]: plugin:out_flowcounter_simple count:327 indicator:num unit:second
2014-07-20 19:05:20 +0900 [info]: plugin:out_flowcounter_simple count:327 indicator:num unit:second
2014-07-20 19:05:21 +0900 [info]: plugin:out_flowcounter_simple count:325 indicator:num unit:second
2014-07-20 19:05:22 +0900 [info]: plugin:out_flowcounter_simple count:326 indicator:num unit:second
まとめ
モダンと言われるPumaってどんなもんなんだろう?と調べてたら,HTTPSを標準でサポートしてるし,ライブラリとしても簡単に使えそうだったので試して見たら,それなりにパフォーマンスが出たので公開してみたという感じです.
Pumaなので,今後FluentdがJRubyとかサポートしても普通にそのまま使えると思います.
実際HTTPSを処理するならFluentdの前にNginxとかを置いた方が良いのだけど,バックエンドでも通信はHTTPSでやってるとかなんか縛りがあるような環境では,手軽に使えるのではないかと思います.
何かあればissue/pull requestに投げてもらえれば対応します.