fluent-plugin-elb-access-log 0.1.5 → 0.1.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 797ad8f847603d045b5eca038c0f5afed8730332
4
- data.tar.gz: cf272aa08b78a320f4b5845d2be210ad7df91272
3
+ metadata.gz: 23af18097699523eb79eacdfff39c155e14a074e
4
+ data.tar.gz: 9132f72caaa0e09e2bbbad4fefef5bb6654642ee
5
5
  SHA512:
6
- metadata.gz: 059252da8f5468d7e579f9edf8beab4cd14b20f55a99a8bce0e9aede7cbf30e5253ba66ac67b2872b145b678bc9762bb0cfdc42641ff1c4c7ee3ebb8545f7ca3
7
- data.tar.gz: 73fa7e9b2e49b46bc6a45db1a932521fd137a42d6fe4c0c5e3fc88634ee265fcae99b247cddce55ec1a21bcf410e69ef35e9d8e1f1a2cbe5a87d70099efd370a
6
+ metadata.gz: f3273e599277bb2ee5367e8934a4c8cb32d6337145c5eee60114558d2d111f4fde60149b3ef2ed811144ab35cdf5fb6e20a2cdbe2f8a8e3b6b8ccd5d4ad49c6d
7
+ data.tar.gz: 4c44fdc553b5afddb444cdead9a2c6bf00304059a4eea0f9abe2d6550588679536122afe2ffe36e5e52c9e0640841a3d287815c43d2096d01fec33d9f82fc842
@@ -88,7 +88,7 @@ class Fluent::ElbAccessLogInput < Fluent::Input
88
88
  end
89
89
 
90
90
  if @history.length > @history_length
91
- @history.shift(history.length - @history_length)
91
+ @history.shift(@history.length - @history_length)
92
92
  end
93
93
  end
94
94
 
@@ -179,10 +179,14 @@ class Fluent::ElbAccessLogInput < Fluent::Input
179
179
  record['request.uri'] = uri
180
180
  record['request.http_version'] = http_version
181
181
 
182
- uri = URI.parse(uri)
182
+ begin
183
+ uri = URI.parse(uri)
183
184
 
184
- [:scheme ,:userinfo, :host, :port, :registry, :path, :opaque, :query, :fragment].each do |key|
185
- record["request.uri.#{key}"] = uri.send(key)
185
+ [:scheme ,:userinfo, :host, :port, :registry, :path, :opaque, :query, :fragment].each do |key|
186
+ record["request.uri.#{key}"] = uri.send(key)
187
+ end
188
+ rescue => e
189
+ @log.warn(e.message)
186
190
  end
187
191
  end
188
192
 
@@ -1,3 +1,3 @@
1
1
  module FluentPluginElbAccessLog
2
- VERSION = '0.1.5'
2
+ VERSION = '0.1.7'
3
3
  end
@@ -216,6 +216,131 @@ describe Fluent::ElbAccessLogInput do
216
216
  end
217
217
 
218
218
  it { is_expected.to eq expected_emits }
219
+
220
+ context 'when include bad URI' do
221
+ let(:today_access_log) do
222
+ <<-EOS
223
+ 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.000053 0.000913 0.000036 200 200 0 3 "GET http://hoge-1876938939.ap-northeast-1.elb.amazonaws.com:80/ HTTP/1.1" "curl/7.30.0" - -
224
+ 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.000053 0.000913 0.000036 200 200 0 3 "GET http://'hoge-1876938939.ap-northeast-1.elb.amazonaws.com:80/ HTTP/1.1" "curl/7.30.0" - -
225
+ EOS
226
+ end
227
+
228
+ let(:expected_emits) do
229
+ [["elb.access_log",
230
+ Time.parse('2015-05-24 19:55:36 UTC').to_i,
231
+ {"timestamp"=>"2015-05-24T19:55:36.000000Z",
232
+ "elb"=>"hoge",
233
+ "client"=>"14.14.124.20",
234
+ "client_port"=>57673,
235
+ "backend"=>"10.0.199.184",
236
+ "backend_port"=>80,
237
+ "request_processing_time"=>5.3e-05,
238
+ "backend_processing_time"=>0.000913,
239
+ "response_processing_time"=>3.6e-05,
240
+ "elb_status_code"=>200,
241
+ "backend_status_code"=>200,
242
+ "received_bytes"=>0,
243
+ "sent_bytes"=>3,
244
+ "request"=>
245
+ "GET http://hoge-1876938939.ap-northeast-1.elb.amazonaws.com:80/ HTTP/1.1",
246
+ "request.method"=>"GET",
247
+ "request.uri"=>
248
+ "http://hoge-1876938939.ap-northeast-1.elb.amazonaws.com:80/",
249
+ "request.http_version"=>"HTTP/1.1",
250
+ "request.uri.scheme"=>"http",
251
+ "request.uri.userinfo"=>nil,
252
+ "request.uri.host"=>"hoge-1876938939.ap-northeast-1.elb.amazonaws.com",
253
+ "request.uri.port"=>80,
254
+ "request.uri.registry"=>nil,
255
+ "request.uri.path"=>"/",
256
+ "request.uri.opaque"=>nil,
257
+ "request.uri.query"=>nil,
258
+ "request.uri.fragment"=>nil}],
259
+ ["elb.access_log",
260
+ Time.parse('2015-05-24 19:55:36 UTC').to_i,
261
+ {"timestamp"=>"2015-05-24T19:55:36.000000Z",
262
+ "elb"=>"hoge",
263
+ "client"=>"14.14.124.20",
264
+ "client_port"=>57673,
265
+ "backend"=>"10.0.199.184",
266
+ "backend_port"=>80,
267
+ "request_processing_time"=>5.3e-05,
268
+ "backend_processing_time"=>0.000913,
269
+ "response_processing_time"=>3.6e-05,
270
+ "elb_status_code"=>200,
271
+ "backend_status_code"=>200,
272
+ "received_bytes"=>0,
273
+ "sent_bytes"=>3,
274
+ "request"=>
275
+ "GET http://'hoge-1876938939.ap-northeast-1.elb.amazonaws.com:80/ HTTP/1.1",
276
+ "request.method"=>"GET",
277
+ "request.uri"=>
278
+ "http://'hoge-1876938939.ap-northeast-1.elb.amazonaws.com:80/",
279
+ "request.http_version"=>"HTTP/1.1"}],
280
+ ["elb.access_log",
281
+ Time.parse('2015-05-25 19:55:36 UTC').to_i,
282
+ {"timestamp"=>"2015-05-25T19:55:36.000000Z",
283
+ "elb"=>"hoge",
284
+ "client"=>"14.14.124.20",
285
+ "client_port"=>57673,
286
+ "backend"=>"10.0.199.184",
287
+ "backend_port"=>80,
288
+ "request_processing_time"=>5.3e-05,
289
+ "backend_processing_time"=>0.000913,
290
+ "response_processing_time"=>3.6e-05,
291
+ "elb_status_code"=>200,
292
+ "backend_status_code"=>200,
293
+ "received_bytes"=>0,
294
+ "sent_bytes"=>3,
295
+ "request"=>
296
+ "GET http://hoge-1876938939.ap-northeast-1.elb.amazonaws.com:80/ HTTP/1.1",
297
+ "request.method"=>"GET",
298
+ "request.uri"=>
299
+ "http://hoge-1876938939.ap-northeast-1.elb.amazonaws.com:80/",
300
+ "request.http_version"=>"HTTP/1.1",
301
+ "request.uri.scheme"=>"http",
302
+ "request.uri.userinfo"=>nil,
303
+ "request.uri.host"=>"hoge-1876938939.ap-northeast-1.elb.amazonaws.com",
304
+ "request.uri.port"=>80,
305
+ "request.uri.registry"=>nil,
306
+ "request.uri.path"=>"/",
307
+ "request.uri.opaque"=>nil,
308
+ "request.uri.query"=>nil,
309
+ "request.uri.fragment"=>nil}],
310
+ ["elb.access_log",
311
+ Time.parse('2015-05-25 19:55:36 UTC').to_i,
312
+ {"timestamp"=>"2015-05-25T19:55:36.000000Z",
313
+ "elb"=>"hoge",
314
+ "client"=>"14.14.124.20",
315
+ "client_port"=>57673,
316
+ "backend"=>"10.0.199.184",
317
+ "backend_port"=>80,
318
+ "request_processing_time"=>5.3e-05,
319
+ "backend_processing_time"=>0.000913,
320
+ "response_processing_time"=>3.6e-05,
321
+ "elb_status_code"=>200,
322
+ "backend_status_code"=>200,
323
+ "received_bytes"=>0,
324
+ "sent_bytes"=>3,
325
+ "request"=>
326
+ "GET http://hoge-1876938939.ap-northeast-1.elb.amazonaws.com:80/ HTTP/1.1",
327
+ "request.method"=>"GET",
328
+ "request.uri"=>
329
+ "http://hoge-1876938939.ap-northeast-1.elb.amazonaws.com:80/",
330
+ "request.http_version"=>"HTTP/1.1",
331
+ "request.uri.scheme"=>"http",
332
+ "request.uri.userinfo"=>nil,
333
+ "request.uri.host"=>"hoge-1876938939.ap-northeast-1.elb.amazonaws.com",
334
+ "request.uri.port"=>80,
335
+ "request.uri.registry"=>nil,
336
+ "request.uri.path"=>"/",
337
+ "request.uri.opaque"=>nil,
338
+ "request.uri.query"=>nil,
339
+ "request.uri.fragment"=>nil}]]
340
+ end
341
+
342
+ it { is_expected.to eq expected_emits }
343
+ end
219
344
  end
220
345
 
221
346
  context 'when access log exists (with tag option)' do
@@ -402,4 +527,48 @@ describe Fluent::ElbAccessLogInput do
402
527
 
403
528
  it { is_expected.to be_empty }
404
529
  end
530
+
531
+ describe 'history#length' do
532
+ let(:today_access_log) do
533
+ <<-EOS
534
+ 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.000053 0.000913 0.000036 200 200 0 3 "GET http://hoge-1876938939.ap-northeast-1.elb.amazonaws.com:80/ HTTP/1.1" "curl/7.30.0" - -
535
+ EOS
536
+ end
537
+
538
+ let(:history) { driver.instance.instance_variable_get(:@history) }
539
+
540
+ before do
541
+ expect(client).to receive(:list_objects).with(bucket: s3_bucket, prefix: yesterday_prefix) { [] }
542
+ expect(client).to receive(:list_objects).with(bucket: s3_bucket, prefix: tomorrow_prefix) { [] }
543
+
544
+ expect(client).to receive(:list_objects).with(bucket: s3_bucket, prefix: today_prefix) do
545
+ [double('today_objects', contents: [double('today_object', key: today_object_key)])]
546
+ end
547
+
548
+ expect(client).to receive(:get_object).with(bucket: s3_bucket, key: today_object_key) do
549
+ [double('today_s3_object', body: StringIO.new(today_access_log))]
550
+ end
551
+
552
+ expect(driver.instance).to receive(:save_timestamp).with(today)
553
+ end
554
+
555
+ subject { history.length }
556
+
557
+ context 'when history.length <= 100' do
558
+ before do
559
+ driver.run
560
+ end
561
+
562
+ it { is_expected.to eq 1 }
563
+ end
564
+
565
+ context 'when history.length > 100' do
566
+ before do
567
+ history.concat (1..100).map(&:to_s)
568
+ driver.run
569
+ end
570
+
571
+ it { is_expected.to eq 100 }
572
+ end
573
+ end
405
574
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-elb-access-log
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genki Sugawara