fluent-plugin-elb-access-log 0.4.0 → 0.4.1
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 +4 -4
- data/.travis.yml +7 -4
- data/README.md +1 -2
- data/lib/fluent/plugin/in_elb_access_log.rb +5 -3
- data/lib/fluent_plugin_elb_access_log/version.rb +1 -1
- data/spec/in_elb_access_log_alb_spec.rb +17 -27
- data/spec/in_elb_access_log_clb_spec.rb +3 -0
- data/spec/in_elb_access_log_client_spec.rb +133 -0
- data/spec/spec_helper.rb +11 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 48b23acb9715aceaba32535f3ee24da9c672e1e0
|
4
|
+
data.tar.gz: 161ce0f55e79b042af34171060d3e4d611f6acdb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a9542814648731d30041c6bf7c9c30bfd822d3be137429628c2eb77aae0f02a7aeda538090065f5be6825cef415c1d60b18e62c07ea3b8edd3623d5be522a03f
|
7
|
+
data.tar.gz: db0422ee4c1b5478eca4ee1531ae947685eb8584942ff264646dfa918147cce605b54625cb69e005caa90910819550a963d5adc8f8377bffa292546c31f71cb9
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -26,7 +26,7 @@ Or install it yourself as:
|
|
26
26
|
|
27
27
|
```apache
|
28
28
|
<source>
|
29
|
-
type elb_access_log
|
29
|
+
@type elb_access_log
|
30
30
|
#aws_key_id YOUR_ACCESS_KEY_ID
|
31
31
|
#aws_sec_key YOUR_SECRET_ACCESS_KEY
|
32
32
|
#profile PROFILE_NAME
|
@@ -58,7 +58,6 @@ Or install it yourself as:
|
|
58
58
|
see http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/access-log-collection.html
|
59
59
|
|
60
60
|
```json
|
61
|
-
// elb.access_log:
|
62
61
|
{
|
63
62
|
"timestamp":"2015-05-24T08:25:36.229576Z",
|
64
63
|
"elb":"hoge",
|
@@ -134,6 +134,7 @@ class Fluent::Plugin::ElbAccessLogInput < Fluent::Input
|
|
134
134
|
|
135
135
|
def shutdown
|
136
136
|
@loop.stop
|
137
|
+
@thread.kill
|
137
138
|
@thread.join
|
138
139
|
super
|
139
140
|
end
|
@@ -161,16 +162,17 @@ class Fluent::Plugin::ElbAccessLogInput < Fluent::Input
|
|
161
162
|
end
|
162
163
|
|
163
164
|
unless @history.include?(obj.key)
|
164
|
-
access_log = client.get_object(bucket: @s3_bucket, key: obj.key).body
|
165
|
+
access_log = client.get_object(bucket: @s3_bucket, key: obj.key).body
|
165
166
|
|
166
167
|
if obj.key.end_with?('.gz')
|
167
168
|
begin
|
168
|
-
|
169
|
-
access_log = inflated
|
169
|
+
access_log = Zlib::GzipReader.wrap(access_log, &:read)
|
170
170
|
rescue Zlib::Error => e
|
171
171
|
@log.warn("#{e.message}: #{access_log.inspect.slice(0, 64)}")
|
172
172
|
next
|
173
173
|
end
|
174
|
+
else
|
175
|
+
access_log = access_log.string
|
174
176
|
end
|
175
177
|
|
176
178
|
emit_access_log(access_log)
|
@@ -7,6 +7,7 @@ describe Fluent::Plugin::ElbAccessLogInput do
|
|
7
7
|
|
8
8
|
let(:fluentd_conf) do
|
9
9
|
{
|
10
|
+
interval: 0,
|
10
11
|
account_id: account_id,
|
11
12
|
s3_bucket: s3_bucket,
|
12
13
|
region: region,
|
@@ -48,7 +49,6 @@ describe Fluent::Plugin::ElbAccessLogInput do
|
|
48
49
|
expect(client).to receive(:list_objects).with(bucket: s3_bucket, prefix: today_prefix) { [] }
|
49
50
|
expect(client).to receive(:list_objects).with(bucket: s3_bucket, prefix: tomorrow_prefix) { [] }
|
50
51
|
expect(driver.instance).to_not receive(:save_timestamp).with(today)
|
51
|
-
expect(driver.instance).to receive(:save_history)
|
52
52
|
expect(driver.instance.log).to_not receive(:warn)
|
53
53
|
|
54
54
|
driver_run(driver)
|
@@ -59,14 +59,14 @@ describe Fluent::Plugin::ElbAccessLogInput do
|
|
59
59
|
|
60
60
|
context 'when access log exists' do
|
61
61
|
let(:today_access_log) do
|
62
|
-
|
62
|
+
gzip(<<-EOS)
|
63
63
|
https 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" ssl_cipher ssl_protocol arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:targetgroup/app/xxx "Root=xxx" "-" "arn:aws:acm:ap-northeast-1:123456789012:certificate/xxx"
|
64
64
|
https 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" ssl_cipher ssl_protocol arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:targetgroup/app/xxx "Root=xxx" "-" "arn:aws:acm:ap-northeast-1:123456789012:certificate/xxx"
|
65
65
|
EOS
|
66
66
|
end
|
67
67
|
|
68
68
|
let(:tomorrow_access_log) do
|
69
|
-
|
69
|
+
gzip(<<-EOS)
|
70
70
|
https 2015-05-25T19: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" ssl_cipher ssl_protocol arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:targetgroup/app/xxx "Root=xxx" "-" "arn:aws:acm:ap-northeast-1:123456789012:certificate/xxx"
|
71
71
|
https 2015-05-25T19: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" ssl_cipher ssl_protocol arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:targetgroup/app/xxx "Root=xxx" "-" "arn:aws:acm:ap-northeast-1:123456789012:certificate/xxx"
|
72
72
|
EOS
|
@@ -94,7 +94,6 @@ https 2015-05-25T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000
|
|
94
94
|
end
|
95
95
|
|
96
96
|
expect(driver.instance).to receive(:save_timestamp).with(tomorrow)
|
97
|
-
expect(driver.instance).to receive(:save_history)
|
98
97
|
expect(driver.instance.log).to_not receive(:warn)
|
99
98
|
|
100
99
|
driver_run(driver)
|
@@ -260,6 +259,7 @@ https 2015-05-25T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000
|
|
260
259
|
context 'when sampling' do
|
261
260
|
let(:fluentd_conf) do
|
262
261
|
{
|
262
|
+
interval: 0,
|
263
263
|
account_id: account_id,
|
264
264
|
s3_bucket: s3_bucket,
|
265
265
|
region: region,
|
@@ -279,7 +279,7 @@ https 2015-05-25T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000
|
|
279
279
|
|
280
280
|
context 'when include bad URI' do
|
281
281
|
let(:today_access_log) do
|
282
|
-
|
282
|
+
gzip(<<-EOS)
|
283
283
|
https 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" ssl_cipher ssl_protocol arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:targetgroup/app/xxx "Root=xxx" "-" "arn:aws:acm:ap-northeast-1:123456789012:certificate/xxx"
|
284
284
|
EOS
|
285
285
|
end
|
@@ -297,7 +297,6 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000
|
|
297
297
|
end
|
298
298
|
|
299
299
|
expect(driver.instance).to receive(:save_timestamp).with(today)
|
300
|
-
expect(driver.instance).to receive(:save_history)
|
301
300
|
|
302
301
|
allow(Addressable::URI).to receive(:parse).and_raise('parse error')
|
303
302
|
expect(driver.instance.log).to receive(:warn).with('parse error: http://hoge-1876938939.ap-northeast-1.elb.amazonaws.com:80/')
|
@@ -344,13 +343,14 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000
|
|
344
343
|
|
345
344
|
context 'when access log exists (with tag option)' do
|
346
345
|
let(:today_access_log) do
|
347
|
-
|
346
|
+
gzip(<<-EOS)
|
348
347
|
https 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" ssl_cipher ssl_protocol arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:targetgroup/app/xxx "Root=xxx" "-" "arn:aws:acm:ap-northeast-1:123456789012:certificate/xxx"
|
349
348
|
EOS
|
350
349
|
end
|
351
350
|
|
352
351
|
let(:fluentd_conf) do
|
353
352
|
{
|
353
|
+
interval: 0,
|
354
354
|
account_id: account_id,
|
355
355
|
s3_bucket: s3_bucket,
|
356
356
|
region: region,
|
@@ -373,7 +373,6 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000
|
|
373
373
|
end
|
374
374
|
|
375
375
|
expect(driver.instance).to receive(:save_timestamp).with(today)
|
376
|
-
expect(driver.instance).to receive(:save_history)
|
377
376
|
expect(driver.instance.log).to_not receive(:warn)
|
378
377
|
|
379
378
|
driver_run(driver)
|
@@ -426,7 +425,7 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000
|
|
426
425
|
|
427
426
|
context 'when access old log exists' do
|
428
427
|
let(:today_access_log) do
|
429
|
-
|
428
|
+
gzip(<<-EOS)
|
430
429
|
https 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" ssl_cipher ssl_protocol arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:targetgroup/app/xxx "Root=xxx" "-" "arn:aws:acm:ap-northeast-1:123456789012:certificate/xxx"
|
431
430
|
EOS
|
432
431
|
end
|
@@ -446,7 +445,6 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000
|
|
446
445
|
end
|
447
446
|
|
448
447
|
expect(driver.instance).to_not receive(:save_timestamp)
|
449
|
-
expect(driver.instance).to receive(:save_history)
|
450
448
|
expect(driver.instance.log).to_not receive(:warn)
|
451
449
|
|
452
450
|
driver_run(driver)
|
@@ -498,7 +496,7 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000
|
|
498
496
|
|
499
497
|
context 'when parse error' do
|
500
498
|
let(:today_access_log) do
|
501
|
-
|
499
|
+
gzip(<<-EOS)
|
502
500
|
https 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" ssl_cipher ssl_protocol arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:targetgroup/app/xxx "Root=xxx" "-" "arn:aws:acm:ap-northeast-1:123456789012:certificate/xxx"
|
503
501
|
EOS
|
504
502
|
end
|
@@ -516,7 +514,6 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000
|
|
516
514
|
end
|
517
515
|
|
518
516
|
expect(driver.instance).to receive(:save_timestamp).with(today)
|
519
|
-
expect(driver.instance).to receive(:save_history)
|
520
517
|
|
521
518
|
expect(CSV).to receive(:parse_line).and_raise('parse error')
|
522
519
|
expect(driver.instance.log).to_not receive(:warn)
|
@@ -569,7 +566,7 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000
|
|
569
566
|
|
570
567
|
context 'when no user_agent' do
|
571
568
|
let(:today_access_log) do
|
572
|
-
|
569
|
+
gzip(<<-EOS)
|
573
570
|
https 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"
|
574
571
|
EOS
|
575
572
|
end
|
@@ -590,7 +587,7 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000
|
|
590
587
|
|
591
588
|
context 'when access old log exists (timeout)' do
|
592
589
|
let(:today_access_log) do
|
593
|
-
|
590
|
+
gzip(<<-EOS)
|
594
591
|
https 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" ssl_cipher ssl_protocol arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:targetgroup/app/xxx "Root=xxx" "-" "arn:aws:acm:ap-northeast-1:123456789012:certificate/xxx"
|
595
592
|
EOS
|
596
593
|
end
|
@@ -607,7 +604,6 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000
|
|
607
604
|
|
608
605
|
expect(client).to_not receive(:get_object)
|
609
606
|
expect(driver.instance).to_not receive(:save_timestamp)
|
610
|
-
expect(driver.instance).to receive(:save_history)
|
611
607
|
expect(driver.instance.log).to_not receive(:warn)
|
612
608
|
|
613
609
|
driver_run(driver)
|
@@ -618,7 +614,7 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000
|
|
618
614
|
|
619
615
|
context 'when emitted log exists' do
|
620
616
|
let(:today_access_log) do
|
621
|
-
|
617
|
+
gzip(<<-EOS)
|
622
618
|
https 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" ssl_cipher ssl_protocol arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:targetgroup/app/xxx "Root=xxx" "-" "arn:aws:acm:ap-northeast-1:123456789012:certificate/xxx"
|
623
619
|
EOS
|
624
620
|
end
|
@@ -636,7 +632,6 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000
|
|
636
632
|
history = driver.instance.instance_variable_get(:@history)
|
637
633
|
history << today_object_key
|
638
634
|
expect(driver.instance).to_not receive(:save_timestamp)
|
639
|
-
expect(driver.instance).to receive(:save_history)
|
640
635
|
expect(driver.instance.log).to_not receive(:warn)
|
641
636
|
|
642
637
|
driver_run(driver)
|
@@ -647,7 +642,7 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000
|
|
647
642
|
|
648
643
|
describe 'history#length' do
|
649
644
|
let(:today_access_log) do
|
650
|
-
|
645
|
+
gzip(<<-EOS)
|
651
646
|
https 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" ssl_cipher ssl_protocol arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:targetgroup/app/xxx "Root=xxx" "-" "arn:aws:acm:ap-northeast-1:123456789012:certificate/xxx"
|
652
647
|
EOS
|
653
648
|
end
|
@@ -667,7 +662,6 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000
|
|
667
662
|
end
|
668
663
|
|
669
664
|
expect(driver.instance).to receive(:save_timestamp).with(today)
|
670
|
-
expect(driver.instance).to receive(:save_history)
|
671
665
|
expect(driver.instance.log).to_not receive(:warn)
|
672
666
|
end
|
673
667
|
|
@@ -693,7 +687,7 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000
|
|
693
687
|
|
694
688
|
context 'when no user_agent' do
|
695
689
|
let(:today_access_log) do
|
696
|
-
|
690
|
+
gzip(<<-EOS)
|
697
691
|
https 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" arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:targetgroup/app/xxx "Root=xxx" "-" "arn:aws:acm:ap-northeast-1:123456789012:certificate/xxx"
|
698
692
|
EOS
|
699
693
|
end
|
@@ -711,7 +705,6 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000
|
|
711
705
|
end
|
712
706
|
|
713
707
|
expect(driver.instance).to receive(:save_timestamp).with(today)
|
714
|
-
expect(driver.instance).to receive(:save_history)
|
715
708
|
expect(driver.instance.log).to_not receive(:warn)
|
716
709
|
|
717
710
|
driver_run(driver)
|
@@ -780,18 +773,17 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000
|
|
780
773
|
double('today_s3_object', body: StringIO.new(today_access_log))
|
781
774
|
end
|
782
775
|
|
783
|
-
expect(driver.instance).to receive(:save_history)
|
784
776
|
end
|
785
777
|
|
786
778
|
specify do
|
787
|
-
expect(driver.instance.log).to receive(:warn).with(
|
779
|
+
expect(driver.instance.log).to receive(:warn).with(/not in gzip format: /)
|
788
780
|
driver_run(driver)
|
789
781
|
end
|
790
782
|
end
|
791
783
|
|
792
784
|
context 'when bad timestamp' do
|
793
785
|
let(:today_access_log) do
|
794
|
-
|
786
|
+
gzip(<<-EOS)
|
795
787
|
https xxx 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" ssl_cipher ssl_protocol arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:targetgroup/app/xxx "Root=xxx" "-" "arn:aws:acm:ap-northeast-1:123456789012:certificate/xxx"
|
796
788
|
EOS
|
797
789
|
end
|
@@ -809,7 +801,6 @@ https xxx hoge 14.14.124.20:57673 10.0.199.184:80 0.000053 0.000913 0.000036 200
|
|
809
801
|
end
|
810
802
|
|
811
803
|
expect(driver.instance).to receive(:save_timestamp).with(today)
|
812
|
-
expect(driver.instance).to receive(:save_history)
|
813
804
|
end
|
814
805
|
|
815
806
|
specify do
|
@@ -821,7 +812,7 @@ https xxx hoge 14.14.124.20:57673 10.0.199.184:80 0.000053 0.000913 0.000036 200
|
|
821
812
|
|
822
813
|
context 'when unquote fails' do
|
823
814
|
let(:today_access_log) do
|
824
|
-
|
815
|
+
gzip(<<-EOS)
|
825
816
|
https 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" ssl_cipher ssl_protocol arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:targetgroup/app/xxx "Root=xxx" "-" "arn:aws:acm:ap-northeast-1:123456789012:certificate/xxx"
|
826
817
|
EOS
|
827
818
|
end
|
@@ -839,7 +830,6 @@ https 2015-05-24T19:55:36.000000Z hoge 14.14.124.20:57673 10.0.199.184:80 0.0000
|
|
839
830
|
end
|
840
831
|
|
841
832
|
expect(driver.instance).to receive(:save_timestamp).with(today)
|
842
|
-
expect(driver.instance).to receive(:save_history)
|
843
833
|
|
844
834
|
expect(CSV).to receive(:parse_line).and_raise('parse error')
|
845
835
|
expect(driver.instance).to receive(:unquote).and_raise('unquote error')
|
@@ -7,6 +7,7 @@ describe Fluent::Plugin::ElbAccessLogInput do
|
|
7
7
|
|
8
8
|
let(:fluentd_conf) do
|
9
9
|
{
|
10
|
+
interval: 0,
|
10
11
|
account_id: account_id,
|
11
12
|
s3_bucket: s3_bucket,
|
12
13
|
region: region,
|
@@ -231,6 +232,7 @@ describe Fluent::Plugin::ElbAccessLogInput do
|
|
231
232
|
context 'when sampling' do
|
232
233
|
let(:fluentd_conf) do
|
233
234
|
{
|
235
|
+
interval: 0,
|
234
236
|
account_id: account_id,
|
235
237
|
s3_bucket: s3_bucket,
|
236
238
|
region: region,
|
@@ -314,6 +316,7 @@ describe Fluent::Plugin::ElbAccessLogInput do
|
|
314
316
|
|
315
317
|
let(:fluentd_conf) do
|
316
318
|
{
|
319
|
+
interval: 0,
|
317
320
|
account_id: account_id,
|
318
321
|
s3_bucket: s3_bucket,
|
319
322
|
region: region,
|
@@ -0,0 +1,133 @@
|
|
1
|
+
describe 'Fluent::Plugin::ElbAccessLogInput#client' do
|
2
|
+
let(:account_id) { '123456789012' }
|
3
|
+
let(:s3_bucket) { 'my-bucket' }
|
4
|
+
let(:region) { 'us-west-1' }
|
5
|
+
let(:driver) { create_driver(fluentd_conf) }
|
6
|
+
let!(:client){ Aws::S3::Client.new(stub_responses: true) }
|
7
|
+
|
8
|
+
let(:fluentd_conf) do
|
9
|
+
{
|
10
|
+
account_id: account_id,
|
11
|
+
s3_bucket: s3_bucket,
|
12
|
+
region: region,
|
13
|
+
start_datetime: (today - 1).to_s,
|
14
|
+
}
|
15
|
+
end
|
16
|
+
|
17
|
+
let(:today) { Time.parse('2015/05/24 18:30 UTC') }
|
18
|
+
let(:yesterday) { today - 86400 }
|
19
|
+
let(:tomorrow) { today + 86400 }
|
20
|
+
|
21
|
+
let(:today_prefix) { "AWSLogs/#{account_id}/elasticloadbalancing/#{region}/#{today.strftime('%Y/%m/%d')}/" }
|
22
|
+
let(:yesterday_prefix) { "AWSLogs/#{account_id}/elasticloadbalancing/#{region}/#{yesterday.strftime('%Y/%m/%d')}/" }
|
23
|
+
let(:tomorrow_prefix) { "AWSLogs/#{account_id}/elasticloadbalancing/#{region}/#{tomorrow.strftime('%Y/%m/%d')}/" }
|
24
|
+
|
25
|
+
let(:today_object_key) { "#{today_prefix}#{account_id}_elasticloadbalancing_ap-northeast-1_hoge_#{today.iso8601}_52.68.51.1_8hSqR3o4.log" }
|
26
|
+
let(:yesterday_object_key) { "#{yesterday_prefix}#{account_id}_elasticloadbalancing_ap-northeast-1_hoge_#{yesterday.iso8601}_52.68.51.1_8hSqR3o4.log" }
|
27
|
+
let(:tomorrow_object_key) { "#{tomorrow_prefix}#{account_id}_elasticloadbalancing_ap-northeast-1_hoge_#{tomorrow.iso8601}_52.68.51.1_8hSqR3o4.log" }
|
28
|
+
|
29
|
+
before do
|
30
|
+
Timecop.freeze(today)
|
31
|
+
allow_any_instance_of(Fluent::Plugin::ElbAccessLogInput).to receive(:load_history) { [] }
|
32
|
+
allow_any_instance_of(Fluent::Plugin::ElbAccessLogInput).to receive(:parse_tsfile) { nil }
|
33
|
+
expect(client).to receive(:list_objects).with(bucket: s3_bucket, prefix: yesterday_prefix) { [] }
|
34
|
+
expect(client).to receive(:list_objects).with(bucket: s3_bucket, prefix: today_prefix) { [] }
|
35
|
+
expect(client).to receive(:list_objects).with(bucket: s3_bucket, prefix: tomorrow_prefix) { [] }
|
36
|
+
allow(FileUtils).to receive(:touch)
|
37
|
+
expect(driver.instance).to_not receive(:save_timestamp).with(today)
|
38
|
+
expect(driver.instance).to receive(:save_history)
|
39
|
+
expect(driver.instance.log).to_not receive(:error)
|
40
|
+
expect(driver.instance.log).to_not receive(:warn)
|
41
|
+
end
|
42
|
+
|
43
|
+
after do
|
44
|
+
Timecop.return
|
45
|
+
end
|
46
|
+
|
47
|
+
context 'when create client without credentials' do
|
48
|
+
specify do
|
49
|
+
expect(Aws::S3::Client).to receive(:new).with(
|
50
|
+
region: region,
|
51
|
+
user_agent_suffix: Fluent::Plugin::ElbAccessLogInput::USER_AGENT_SUFFIX,
|
52
|
+
).and_return(client)
|
53
|
+
|
54
|
+
driver_run(driver)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
context 'when create client with aws_key_id/aws_sec_key' do
|
59
|
+
let(:aws_key_id) { 'akid' }
|
60
|
+
let(:aws_sec_key) { 'secret' }
|
61
|
+
|
62
|
+
let(:fluentd_conf) do
|
63
|
+
{
|
64
|
+
account_id: account_id,
|
65
|
+
s3_bucket: s3_bucket,
|
66
|
+
region: region,
|
67
|
+
start_datetime: (today - 1).to_s,
|
68
|
+
aws_key_id: aws_key_id,
|
69
|
+
aws_sec_key: aws_sec_key,
|
70
|
+
}
|
71
|
+
end
|
72
|
+
|
73
|
+
specify do
|
74
|
+
expect(Aws::S3::Client).to receive(:new).with(
|
75
|
+
region: region,
|
76
|
+
user_agent_suffix: Fluent::Plugin::ElbAccessLogInput::USER_AGENT_SUFFIX,
|
77
|
+
access_key_id: aws_key_id,
|
78
|
+
secret_access_key: aws_sec_key,
|
79
|
+
).and_return(client)
|
80
|
+
|
81
|
+
driver_run(driver)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
context 'when create client with profile/credentials_path' do
|
86
|
+
let(:profile) { 'my-profile' }
|
87
|
+
let(:credentials_path) { '/foo/bar/zoo' }
|
88
|
+
|
89
|
+
let(:fluentd_conf) do
|
90
|
+
{
|
91
|
+
account_id: account_id,
|
92
|
+
s3_bucket: s3_bucket,
|
93
|
+
region: region,
|
94
|
+
start_datetime: (today - 1).to_s,
|
95
|
+
profile: profile,
|
96
|
+
credentials_path: credentials_path,
|
97
|
+
}
|
98
|
+
end
|
99
|
+
|
100
|
+
specify do
|
101
|
+
expect(Aws::S3::Client).to receive(:new) do |options|
|
102
|
+
credentials = options.fetch(:credentials)
|
103
|
+
expect(credentials.profile_name).to eq profile
|
104
|
+
expect(credentials.path).to eq credentials_path
|
105
|
+
client
|
106
|
+
end
|
107
|
+
|
108
|
+
driver_run(driver)
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
context 'when create client with debug' do
|
113
|
+
let(:fluentd_conf) do
|
114
|
+
{
|
115
|
+
account_id: account_id,
|
116
|
+
s3_bucket: s3_bucket,
|
117
|
+
region: region,
|
118
|
+
start_datetime: (today - 1).to_s,
|
119
|
+
debug: true,
|
120
|
+
}
|
121
|
+
end
|
122
|
+
|
123
|
+
specify do
|
124
|
+
expect(Aws::S3::Client).to receive(:new) do |options|
|
125
|
+
expect(options.fetch(:log_level)).to eq :debug
|
126
|
+
expect(options.fetch(:logger)).to be_a(Logger)
|
127
|
+
client
|
128
|
+
end
|
129
|
+
|
130
|
+
driver_run(driver)
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -47,9 +47,20 @@ def driver_run(driver)
|
|
47
47
|
driver.run do
|
48
48
|
coolio_loop = driver.instance.instance_variable_get(:@loop)
|
49
49
|
sleep 0.1 until coolio_loop.instance_variable_get(:@running)
|
50
|
+
sleep 0.1
|
50
51
|
end
|
51
52
|
end
|
52
53
|
|
54
|
+
def gzip(str)
|
55
|
+
io = StringIO.new
|
56
|
+
|
57
|
+
Zlib::GzipWriter.wrap(io) do |gz|
|
58
|
+
gz << str
|
59
|
+
end
|
60
|
+
|
61
|
+
io.string
|
62
|
+
end
|
63
|
+
|
53
64
|
# prevent Test::Unit's AutoRunner from executing during RSpec's rake task
|
54
65
|
# ref: https://github.com/rspec/rspec-rails/issues/1171
|
55
66
|
Test::Unit.run = true if defined?(Test::Unit) && Test::Unit.respond_to?(:run=)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-elb-access-log
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Genki Sugawara
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-12-
|
11
|
+
date: 2017-12-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|
@@ -171,6 +171,7 @@ files:
|
|
171
171
|
- lib/fluent_plugin_elb_access_log/version.rb
|
172
172
|
- spec/in_elb_access_log_alb_spec.rb
|
173
173
|
- spec/in_elb_access_log_clb_spec.rb
|
174
|
+
- spec/in_elb_access_log_client_spec.rb
|
174
175
|
- spec/in_elb_access_log_config_spec.rb
|
175
176
|
- spec/spec_helper.rb
|
176
177
|
homepage: https://github.com/winebarrel/fluent-plugin-elb-access-log
|
@@ -200,5 +201,6 @@ summary: Fluentd input plugin for AWS ELB Access Logs.
|
|
200
201
|
test_files:
|
201
202
|
- spec/in_elb_access_log_alb_spec.rb
|
202
203
|
- spec/in_elb_access_log_clb_spec.rb
|
204
|
+
- spec/in_elb_access_log_client_spec.rb
|
203
205
|
- spec/in_elb_access_log_config_spec.rb
|
204
206
|
- spec/spec_helper.rb
|