Puma based HTTP(S) plugin for Fluentd

HTTP input plugin based on Puma. Almost behaviours are same as in_http plugin. Refer to in_http official document.

This input plugin supports HTTPS mode. If you can't use Nginx or other proxy server on front of Fluentd for HTTPS, this plugin is useful.

Installation

Use RubyGems:

fluent-gem install fluent-plugin-http-puma

Configuration

<source>
  type http_puma

  # optional parameters(same as in_http)
  bind 127.0.0.1
  port 9890
  backlog 2048
  format json

  # optional Puma parameters
  min_threads 0
  max_threads 4
  use_ssl
  ssl_keys ["/path/to/key", "/path/to/cert"]
</source>

HTTPS mode

Use use_ssl and ssl_keys.

<source>
  type http_puma

  use_ssl
  ssl_keys ["/path/to/key", "/path/to/cert"] # ssl_keys is required when use_ssl is true
</source>

ssl_keys parameter is json array which has two elements, 1st is for key file, 2nd is for cert file.

Performance

Tested on my MBP, CPU: 2.6 GHz Intel Core i7 and Memory: 16GB 1600MHz DDR3. Sending small json with application/json content-type.

  • in_http

Ave 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

Ave 2500 events/sec.

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_PEER client

Ave 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
  • in_http_puma with VERIFY_NONE client

Ave 400 events/sec.

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