fluent-plugin-elasticsearch 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c80790f854f11ab486602bfec4e4f96ab56f2f56
4
+ data.tar.gz: 06163c0e34e87393e84f9a8a04d906dff2fc985b
5
+ SHA512:
6
+ metadata.gz: 9344c56bfe39072a37402e7e2343a7ec28a9d3417cb14f899bc57744bf91e224d98d5fbf3df048b10d37b36c7bf3edb77812ecd10407c76dad514d0174c98828
7
+ data.tar.gz: 102828a3a5df25a3c5dcf8462c9a43c5afd802bbe974f2497b5d2c1e9c53f6cf8462165b1a3bad895ed34915e4fdce286cc6976f980085cfe41411fdf25dd2f1
data/.travis.yml ADDED
@@ -0,0 +1,8 @@
1
+ language: ruby
2
+
3
+ rvm:
4
+ - 1.9.3
5
+ - 2.0.0
6
+ - 2.1.1
7
+
8
+ script: bundle exec ruby -S -Itest test/plugin/test_out_elasticsearch.rb
data/History.md CHANGED
@@ -1,34 +1,33 @@
1
- Changelog
2
- =========
1
+ ## Changelog
3
2
 
4
- 0.2.0
5
- =====
3
+ ### 0.3.0
4
+
5
+ - add `parent_key` option (#28)
6
+ - have travis-ci build on multiple rubies (#30)
7
+ - add `utc_index` and `hosts` options, switch to using `elasticsearch` gem (#26, #29)
8
+
9
+ ### 0.2.0
6
10
 
7
11
  - fix encoding issues with JSON conversion and again when sending to elasticsearch (#19, #21)
8
12
  - add logstash_dateformat option (#20)
9
13
 
10
- 0.1.4
11
- =====
14
+ ### 0.1.4
12
15
 
13
16
  - add logstash_prefix option
14
17
 
15
- 0.1.3
16
- =====
18
+ ### 0.1.3
17
19
 
18
20
  - raising an exception on non-success response from elasticsearch
19
21
 
20
- 0.1.2
21
- =====
22
+ ### 0.1.2
22
23
 
23
24
  - add id_key option
24
25
 
25
- 0.1.1
26
- =====
26
+ ### 0.1.1
27
27
 
28
28
  - fix timezone in logstash key
29
29
 
30
30
 
31
- 0.1.0
32
- =====
31
+ ### 0.1.0
33
32
 
34
33
  - Initial gem release.
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Fluent::Plugin::Elasticsearch
1
+ # Fluent::Plugin::Elasticsearch, a plugin for [Fluentd](http://fluentd.org)
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/fluent-plugin-elasticsearch.png)](http://badge.fury.io/rb/fluent-plugin-elasticsearch)
4
4
  [![Dependency Status](https://gemnasium.com/uken/guard-sidekiq.png)](https://gemnasium.com/uken/fluent-plugin-elasticsearch)
@@ -12,6 +12,8 @@ I wrote this so you can search logs routed through Fluentd.
12
12
 
13
13
  $ gem install fluent-plugin-elasticsearch
14
14
 
15
+ * prerequisite : You need to install [libcurl](http://curl.haxx.se/libcurl/) to work with.
16
+
15
17
  ## Usage
16
18
 
17
19
  In your fluentd configration, use `type elasticsearch`. Additional configuration is optional, default values would look like this:
@@ -23,9 +25,18 @@ index_name fluentd
23
25
  type_name fluentd
24
26
  ```
25
27
 
26
-
27
28
  **More options:**
28
29
 
30
+ ```
31
+ hosts host1:port1,host2:port2,host3:port3
32
+ ```
33
+
34
+ You can specify multiple elasticsearch hosts with separator ",".
35
+
36
+ If you specify multiple hosts, plugin writes to elasticsearch with load balanced. (it's elasticsearch-ruby's feature, default is round-robin.)
37
+
38
+ If you specify this option, host and port options are ignored.
39
+
29
40
  ```
30
41
  logstash_format true # defaults to false
31
42
  ```
@@ -44,6 +55,12 @@ logstash_dateformat %Y.%m. # defaults to "%Y.%m.%d"
44
55
 
45
56
  By default, the records inserted into index `logstash-YYMMDD`. This option allows to insert into specified index like `logstash-YYYYMM` for a monthly index.
46
57
 
58
+ ```
59
+ utc_index true
60
+ ```
61
+
62
+ By default, the records inserted into index `logstash-YYMMDD` with utc (Coordinated Universal Time). This option allows to use local time if you describe utc_index to false.
63
+
47
64
  ---
48
65
 
49
66
  ```
@@ -117,3 +134,5 @@ Please consider using [fluent-plugin-forest](https://github.com/tagomoris/fluent
117
134
  3. Commit your changes (`git commit -am 'Add some feature'`)
118
135
  4. Push to the branch (`git push origin my-new-feature`)
119
136
  5. Create new Pull Request
137
+
138
+ If you have a question, [open an Issue](https://github.com/uken/fluent-plugin-elasticsearch/issues).
@@ -1,23 +1,25 @@
1
1
  # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
2
+ $:.push File.expand_path('../lib', __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
- s.name = "fluent-plugin-elasticsearch"
6
- s.version = '0.2.0'
7
- s.authors = ["diogo", 'pitr']
8
- s.email = ["team@uken.com"]
5
+ s.name = 'fluent-plugin-elasticsearch'
6
+ s.version = '0.3.0'
7
+ s.authors = ['diogo', 'pitr']
8
+ s.email = ['team@uken.com']
9
9
  s.description = %q{ElasticSearch output plugin for Fluent event collector}
10
10
  s.summary = s.description
11
- s.homepage = "https://github.com/uken/fluent-plugin-elasticsearch"
11
+ s.homepage = 'https://github.com/uken/fluent-plugin-elasticsearch'
12
12
  s.license = 'MIT'
13
13
 
14
14
  s.files = `git ls-files`.split($/)
15
15
  s.executables = s.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
16
16
  s.test_files = s.files.grep(%r{^(test|spec|features)/})
17
- s.require_paths = ["lib"]
17
+ s.require_paths = ['lib']
18
18
 
19
- s.add_runtime_dependency "fluentd"
19
+ s.add_runtime_dependency 'fluentd', '~> 0'
20
+ s.add_runtime_dependency 'patron', '~> 0'
21
+ s.add_runtime_dependency 'elasticsearch', '~> 0'
20
22
 
21
- s.add_development_dependency "rake"
22
- s.add_development_dependency "webmock"
23
+ s.add_development_dependency 'rake', '~> 0'
24
+ s.add_development_dependency 'webmock', '~> 0'
23
25
  end
@@ -1,6 +1,7 @@
1
1
  # encoding: UTF-8
2
- require 'net/http'
3
2
  require 'date'
3
+ require 'patron'
4
+ require 'elasticsearch'
4
5
 
5
6
  class Fluent::ElasticsearchOutput < Fluent::BufferedOutput
6
7
  Fluent::Plugin.register_output('elasticsearch', self)
@@ -10,9 +11,12 @@ class Fluent::ElasticsearchOutput < Fluent::BufferedOutput
10
11
  config_param :logstash_format, :bool, :default => false
11
12
  config_param :logstash_prefix, :string, :default => "logstash"
12
13
  config_param :logstash_dateformat, :string, :default => "%Y.%m.%d"
14
+ config_param :utc_index, :bool, :default => true
13
15
  config_param :type_name, :string, :default => "fluentd"
14
16
  config_param :index_name, :string, :default => "fluentd"
15
17
  config_param :id_key, :string, :default => nil
18
+ config_param :parent_key, :string, :default => nil
19
+ config_param :hosts, :string, :default => nil
16
20
 
17
21
  include Fluent::SetTagKeyMixin
18
22
  config_set_default :include_tag_key, false
@@ -29,6 +33,20 @@ class Fluent::ElasticsearchOutput < Fluent::BufferedOutput
29
33
  super
30
34
  end
31
35
 
36
+ def client
37
+ @_es ||= Elasticsearch::Client.new :hosts => get_hosts, :reload_connections => true, :adapter => :patron, :retry_on_failure => 5
38
+ raise "Can not reach Elasticsearch cluster (#{@host}:#{@port})!" unless @_es.ping
39
+ @_es
40
+ end
41
+
42
+ def get_hosts
43
+ if @hosts
44
+ @hosts.split(',').map {|x| x.strip}.compact
45
+ else
46
+ ["#{@host}:#{@port}"]
47
+ end
48
+ end
49
+
32
50
  def format(tag, time, record)
33
51
  [tag, time, record].to_msgpack
34
52
  end
@@ -43,7 +61,11 @@ class Fluent::ElasticsearchOutput < Fluent::BufferedOutput
43
61
  chunk.msgpack_each do |tag, time, record|
44
62
  if @logstash_format
45
63
  record.merge!({"@timestamp" => Time.at(time).to_datetime.to_s})
46
- target_index = "#{@logstash_prefix}-#{Time.at(time).getutc.strftime("#{@logstash_dateformat}")}"
64
+ if @utc_index
65
+ target_index = "#{@logstash_prefix}-#{Time.at(time).getutc.strftime("#{@logstash_dateformat}")}"
66
+ else
67
+ target_index = "#{@logstash_prefix}-#{Time.at(time).strftime("#{@logstash_dateformat}")}"
68
+ end
47
69
  else
48
70
  target_index = @index_name
49
71
  end
@@ -56,14 +78,20 @@ class Fluent::ElasticsearchOutput < Fluent::BufferedOutput
56
78
  if @id_key && record[@id_key]
57
79
  meta['index']['_id'] = record[@id_key]
58
80
  end
59
- bulk_message << Yajl::Encoder.encode(meta)
60
- bulk_message << Yajl::Encoder.encode(record)
81
+
82
+ if @parent_key && record[@parent_key]
83
+ meta['index']['_parent'] = record[@parent_key]
84
+ end
85
+
86
+ bulk_message << meta
87
+ bulk_message << record
61
88
  end
62
- bulk_message << ""
63
89
 
64
- http = Net::HTTP.new(@host, @port.to_i)
65
- request = Net::HTTP::Post.new('/_bulk', {'content-type' => 'application/json; charset=utf-8'})
66
- request.body = bulk_message.join("\n")
67
- http.request(request).value
90
+ send(bulk_message) unless bulk_message.empty?
91
+ bulk_message.clear
92
+ end
93
+
94
+ def send(data)
95
+ client.bulk body: data
68
96
  end
69
97
  end
@@ -14,7 +14,7 @@ $:.push File.dirname(__FILE__)
14
14
  WebMock.disable_net_connect!
15
15
 
16
16
  class ElasticsearchOutput < Test::Unit::TestCase
17
- attr_accessor :index_cmds, :content_type
17
+ attr_accessor :index_cmds, :index_command_counts
18
18
 
19
19
  def setup
20
20
  Fluent::Test.setup
@@ -26,12 +26,15 @@ class ElasticsearchOutput < Test::Unit::TestCase
26
26
  end
27
27
 
28
28
  def sample_record
29
- {'age' => 26, 'request_id' => '42'}
29
+ {'age' => 26, 'request_id' => '42', 'parent_id' => 'parent'}
30
+ end
31
+
32
+ def stub_elastic_ping(url="http://localhost:9200")
33
+ stub_request(:head, url).with.to_return(:status => 200, :body => "", :headers => {})
30
34
  end
31
35
 
32
36
  def stub_elastic(url="http://localhost:9200/_bulk")
33
37
  stub_request(:post, url).with do |req|
34
- @content_type = req.headers["Content-Type"]
35
38
  @index_cmds = req.body.split("\n").map {|r| JSON.parse(r) }
36
39
  end
37
40
  end
@@ -40,21 +43,28 @@ class ElasticsearchOutput < Test::Unit::TestCase
40
43
  stub_request(:post, url).to_return(:status => [503, "Service Unavailable"])
41
44
  end
42
45
 
43
- def test_writes_to_default_index
44
- stub_elastic
45
- driver.emit(sample_record)
46
- driver.run
47
- assert_equal('fluentd', index_cmds.first['index']['_index'])
46
+ def stub_elastic_with_store_index_command_counts(url="http://localhost:9200/_bulk")
47
+ if @index_command_counts == nil
48
+ @index_command_counts = {}
49
+ @index_command_counts.default = 0
50
+ end
51
+
52
+ stub_request(:post, url).with do |req|
53
+ index_cmds = req.body.split("\n").map {|r| JSON.parse(r) }
54
+ @index_command_counts[url] += index_cmds.size
55
+ end
48
56
  end
49
57
 
50
- def test_wrties_with_proper_content_type
58
+ def test_writes_to_default_index
59
+ stub_elastic_ping
51
60
  stub_elastic
52
61
  driver.emit(sample_record)
53
62
  driver.run
54
- assert_equal("application/json; charset=utf-8", @content_type)
63
+ assert_equal('fluentd', index_cmds.first['index']['_index'])
55
64
  end
56
65
 
57
66
  def test_writes_to_default_type
67
+ stub_elastic_ping
58
68
  stub_elastic
59
69
  driver.emit(sample_record)
60
70
  driver.run
@@ -63,6 +73,7 @@ class ElasticsearchOutput < Test::Unit::TestCase
63
73
 
64
74
  def test_writes_to_speficied_index
65
75
  driver.configure("index_name myindex\n")
76
+ stub_elastic_ping
66
77
  stub_elastic
67
78
  driver.emit(sample_record)
68
79
  driver.run
@@ -71,6 +82,7 @@ class ElasticsearchOutput < Test::Unit::TestCase
71
82
 
72
83
  def test_writes_to_speficied_type
73
84
  driver.configure("type_name mytype\n")
85
+ stub_elastic_ping
74
86
  stub_elastic
75
87
  driver.emit(sample_record)
76
88
  driver.run
@@ -79,6 +91,7 @@ class ElasticsearchOutput < Test::Unit::TestCase
79
91
 
80
92
  def test_writes_to_speficied_host
81
93
  driver.configure("host 192.168.33.50\n")
94
+ stub_elastic_ping("http://192.168.33.50:9200")
82
95
  elastic_request = stub_elastic("http://192.168.33.50:9200/_bulk")
83
96
  driver.emit(sample_record)
84
97
  driver.run
@@ -87,13 +100,46 @@ class ElasticsearchOutput < Test::Unit::TestCase
87
100
 
88
101
  def test_writes_to_speficied_port
89
102
  driver.configure("port 9201\n")
103
+ stub_elastic_ping("http://localhost:9201")
90
104
  elastic_request = stub_elastic("http://localhost:9201/_bulk")
91
105
  driver.emit(sample_record)
92
106
  driver.run
93
107
  assert_requested(elastic_request)
94
108
  end
95
109
 
110
+ def test_writes_to_multi_hosts
111
+ hosts = [['192.168.33.50', 9201], ['192.168.33.51', 9201], ['192.168.33.52', 9201]]
112
+ hosts_string = hosts.map {|x| "#{x[0]}:#{x[1]}"}.compact.join(',')
113
+
114
+ driver.configure("hosts #{hosts_string}")
115
+
116
+ hosts.each do |host_info|
117
+ host, port = host_info
118
+ stub_elastic_ping("http://#{host}:#{port}")
119
+ stub_elastic_with_store_index_command_counts("http://#{host}:#{port}/_bulk")
120
+ end
121
+
122
+ 1000.times do
123
+ driver.emit(sample_record.merge('age'=>rand(100)))
124
+ end
125
+
126
+ driver.run
127
+
128
+ # @note: we cannot make multi chunks with options (flush_interval, buffer_chunk_limit)
129
+ # it's Fluentd test driver's constraint
130
+ # so @index_command_counts.size is always 1
131
+
132
+ assert(@index_command_counts.size > 0, "not working with hosts options")
133
+
134
+ total = 0
135
+ @index_command_counts.each do |url, count|
136
+ total += count
137
+ end
138
+ assert_equal(2000, total)
139
+ end
140
+
96
141
  def test_makes_bulk_request
142
+ stub_elastic_ping
97
143
  stub_elastic
98
144
  driver.emit(sample_record)
99
145
  driver.emit(sample_record.merge('age' => 27))
@@ -102,6 +148,7 @@ class ElasticsearchOutput < Test::Unit::TestCase
102
148
  end
103
149
 
104
150
  def test_all_records_are_preserved_in_bulk
151
+ stub_elastic_ping
105
152
  stub_elastic
106
153
  driver.emit(sample_record)
107
154
  driver.emit(sample_record.merge('age' => 27))
@@ -114,17 +161,31 @@ class ElasticsearchOutput < Test::Unit::TestCase
114
161
  driver.configure("logstash_format true\n")
115
162
  time = Time.parse Date.today.to_s
116
163
  logstash_index = "logstash-#{time.getutc.strftime("%Y.%m.%d")}"
164
+ stub_elastic_ping
117
165
  stub_elastic
118
166
  driver.emit(sample_record, time)
119
167
  driver.run
120
168
  assert_equal(logstash_index, index_cmds.first['index']['_index'])
121
169
  end
122
170
 
171
+ def test_writes_to_logstash_utc_index
172
+ driver.configure("logstash_format true\n")
173
+ driver.configure("utc_index false\n")
174
+ time = Time.parse Date.today.to_s
175
+ utc_index = "logstash-#{time.strftime("%Y.%m.%d")}"
176
+ stub_elastic_ping
177
+ stub_elastic
178
+ driver.emit(sample_record, time)
179
+ driver.run
180
+ assert_equal(utc_index, index_cmds.first['index']['_index'])
181
+ end
182
+
123
183
  def test_writes_to_logstash_index_with_specified_prefix
124
184
  driver.configure("logstash_format true\n")
125
185
  driver.configure("logstash_prefix myprefix\n")
126
186
  time = Time.parse Date.today.to_s
127
187
  logstash_index = "myprefix-#{time.getutc.strftime("%Y.%m.%d")}"
188
+ stub_elastic_ping
128
189
  stub_elastic
129
190
  driver.emit(sample_record, time)
130
191
  driver.run
@@ -136,6 +197,7 @@ class ElasticsearchOutput < Test::Unit::TestCase
136
197
  driver.configure("logstash_dateformat %Y.%m\n")
137
198
  time = Time.parse Date.today.to_s
138
199
  logstash_index = "logstash-#{time.getutc.strftime("%Y.%m")}"
200
+ stub_elastic_ping
139
201
  stub_elastic
140
202
  driver.emit(sample_record, time)
141
203
  driver.run
@@ -148,6 +210,7 @@ class ElasticsearchOutput < Test::Unit::TestCase
148
210
  driver.configure("logstash_dateformat %Y.%m\n")
149
211
  time = Time.parse Date.today.to_s
150
212
  logstash_index = "myprefix-#{time.getutc.strftime("%Y.%m")}"
213
+ stub_elastic_ping
151
214
  stub_elastic
152
215
  driver.emit(sample_record, time)
153
216
  driver.run
@@ -155,6 +218,7 @@ class ElasticsearchOutput < Test::Unit::TestCase
155
218
  end
156
219
 
157
220
  def test_doesnt_add_logstash_timestamp_by_default
221
+ stub_elastic_ping
158
222
  stub_elastic
159
223
  driver.emit(sample_record)
160
224
  driver.run
@@ -163,6 +227,7 @@ class ElasticsearchOutput < Test::Unit::TestCase
163
227
 
164
228
  def test_adds_logstash_timestamp_when_configured
165
229
  driver.configure("logstash_format true\n")
230
+ stub_elastic_ping
166
231
  stub_elastic
167
232
  ts = DateTime.now.to_s
168
233
  driver.emit(sample_record)
@@ -172,6 +237,7 @@ class ElasticsearchOutput < Test::Unit::TestCase
172
237
  end
173
238
 
174
239
  def test_doesnt_add_tag_key_by_default
240
+ stub_elastic_ping
175
241
  stub_elastic
176
242
  driver.emit(sample_record)
177
243
  driver.run
@@ -180,6 +246,7 @@ class ElasticsearchOutput < Test::Unit::TestCase
180
246
 
181
247
  def test_adds_tag_key_when_configured
182
248
  driver('mytag').configure("include_tag_key true\n")
249
+ stub_elastic_ping
183
250
  stub_elastic
184
251
  driver.emit(sample_record)
185
252
  driver.run
@@ -189,6 +256,7 @@ class ElasticsearchOutput < Test::Unit::TestCase
189
256
 
190
257
  def test_adds_id_key_when_configured
191
258
  driver.configure("id_key request_id\n")
259
+ stub_elastic_ping
192
260
  stub_elastic
193
261
  driver.emit(sample_record)
194
262
  driver.run
@@ -197,6 +265,7 @@ class ElasticsearchOutput < Test::Unit::TestCase
197
265
 
198
266
  def test_doesnt_add_id_key_if_missing_when_configured
199
267
  driver.configure("id_key another_request_id\n")
268
+ stub_elastic_ping
200
269
  stub_elastic
201
270
  driver.emit(sample_record)
202
271
  driver.run
@@ -204,16 +273,44 @@ class ElasticsearchOutput < Test::Unit::TestCase
204
273
  end
205
274
 
206
275
  def test_adds_id_key_when_not_configured
276
+ stub_elastic_ping
207
277
  stub_elastic
208
278
  driver.emit(sample_record)
209
279
  driver.run
210
280
  assert(!index_cmds[0]['index'].has_key?('_id'))
211
281
  end
212
282
 
283
+ def test_adds_parent_key_when_configured
284
+ driver.configure("parent_key parent_id\n")
285
+ stub_elastic_ping
286
+ stub_elastic
287
+ driver.emit(sample_record)
288
+ driver.run
289
+ assert_equal(index_cmds[0]['index']['_parent'], 'parent')
290
+ end
291
+
292
+ def test_doesnt_add_parent_key_if_missing_when_configured
293
+ driver.configure("parent_key another_parent_id\n")
294
+ stub_elastic_ping
295
+ stub_elastic
296
+ driver.emit(sample_record)
297
+ driver.run
298
+ assert(!index_cmds[0]['index'].has_key?('_parent'))
299
+ end
300
+
301
+ def test_adds_parent_key_when_not_configured
302
+ stub_elastic_ping
303
+ stub_elastic
304
+ driver.emit(sample_record)
305
+ driver.run
306
+ assert(!index_cmds[0]['index'].has_key?('_parent'))
307
+ end
308
+
213
309
  def test_request_error
310
+ stub_elastic_ping
214
311
  stub_elastic_unavailable
215
312
  driver.emit(sample_record)
216
- assert_raise(Net::HTTPFatalError) {
313
+ assert_raise(Elasticsearch::Transport::Transport::Errors::ServiceUnavailable) {
217
314
  driver.run
218
315
  }
219
316
  end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-elasticsearch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
5
- prerelease:
4
+ version: 0.3.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - diogo
@@ -10,54 +9,76 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2013-12-06 00:00:00.000000000 Z
12
+ date: 2014-03-17 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: fluentd
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
- - - ! '>='
18
+ - - "~>"
21
19
  - !ruby/object:Gem::Version
22
20
  version: '0'
23
21
  type: :runtime
24
22
  prerelease: false
25
23
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
24
  requirements:
28
- - - ! '>='
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: patron
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: elasticsearch
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
29
54
  - !ruby/object:Gem::Version
30
55
  version: '0'
31
56
  - !ruby/object:Gem::Dependency
32
57
  name: rake
33
58
  requirement: !ruby/object:Gem::Requirement
34
- none: false
35
59
  requirements:
36
- - - ! '>='
60
+ - - "~>"
37
61
  - !ruby/object:Gem::Version
38
62
  version: '0'
39
63
  type: :development
40
64
  prerelease: false
41
65
  version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
66
  requirements:
44
- - - ! '>='
67
+ - - "~>"
45
68
  - !ruby/object:Gem::Version
46
69
  version: '0'
47
70
  - !ruby/object:Gem::Dependency
48
71
  name: webmock
49
72
  requirement: !ruby/object:Gem::Requirement
50
- none: false
51
73
  requirements:
52
- - - ! '>='
74
+ - - "~>"
53
75
  - !ruby/object:Gem::Version
54
76
  version: '0'
55
77
  type: :development
56
78
  prerelease: false
57
79
  version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
80
  requirements:
60
- - - ! '>='
81
+ - - "~>"
61
82
  - !ruby/object:Gem::Version
62
83
  version: '0'
63
84
  description: ElasticSearch output plugin for Fluent event collector
@@ -67,7 +88,8 @@ executables: []
67
88
  extensions: []
68
89
  extra_rdoc_files: []
69
90
  files:
70
- - .gitignore
91
+ - ".gitignore"
92
+ - ".travis.yml"
71
93
  - Gemfile
72
94
  - History.md
73
95
  - LICENSE.txt
@@ -80,33 +102,26 @@ files:
80
102
  homepage: https://github.com/uken/fluent-plugin-elasticsearch
81
103
  licenses:
82
104
  - MIT
105
+ metadata: {}
83
106
  post_install_message:
84
107
  rdoc_options: []
85
108
  require_paths:
86
109
  - lib
87
110
  required_ruby_version: !ruby/object:Gem::Requirement
88
- none: false
89
111
  requirements:
90
- - - ! '>='
112
+ - - ">="
91
113
  - !ruby/object:Gem::Version
92
114
  version: '0'
93
- segments:
94
- - 0
95
- hash: -1091394761449257025
96
115
  required_rubygems_version: !ruby/object:Gem::Requirement
97
- none: false
98
116
  requirements:
99
- - - ! '>='
117
+ - - ">="
100
118
  - !ruby/object:Gem::Version
101
119
  version: '0'
102
- segments:
103
- - 0
104
- hash: -1091394761449257025
105
120
  requirements: []
106
121
  rubyforge_project:
107
- rubygems_version: 1.8.23
122
+ rubygems_version: 2.2.0
108
123
  signing_key:
109
- specification_version: 3
124
+ specification_version: 4
110
125
  summary: ElasticSearch output plugin for Fluent event collector
111
126
  test_files:
112
127
  - test/helper.rb