fluent-plugin-elb-access-log 0.3.5 → 0.3.6.beta1

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: f85d937e44c08597e68f473469740f4d3f4cd1e4
4
- data.tar.gz: 9aca5b3731371a67cbcfffd9af0e72bbbff48c4d
3
+ metadata.gz: b6eaa3c13f77a8734ed7221b6d9a27dfcbc2d8c3
4
+ data.tar.gz: 6e4f32e43b6ff3a9299a8172fb5645466c5b8322
5
5
  SHA512:
6
- metadata.gz: 5e82edceb9328fab1dbf16dd938f4a960371f18fde1811b4694b276f9930f7ca7d7fde71a27533a46ab010c0b328a379c223d07717020f206848bbfd7ac8cfc8
7
- data.tar.gz: 6f09b24ee4f1ccea68332197db41c380c0b0e1f4066559bfbbbc2279d23f4f7714efb155141129a143131aa02ce46f8f7d31dff6780fff4bbab38ea3bda2c433
6
+ metadata.gz: 5bf817d46c52c8d70016c14add800602af362b71ea2de5c3420b66641766bdb5138d08090abf4d5d0b8f4a1036f049fcaec739dfa8a578b84400bb85a5df0ce6
7
+ data.tar.gz: 371117dac3d925ec4ed8d214311cfc8c3b24daac639a46a71bec779faa1d2b78ecd8662acb7f6de5b37eb2bfde179e3012d48291e402220b5d703448f99e9681
@@ -166,7 +166,7 @@ class Fluent::ElbAccessLogInput < Fluent::Input
166
166
 
167
167
  parsed_access_log = []
168
168
 
169
- normalize_line_feeds(access_log).split("\n").each do |line|
169
+ access_log.split("\n").each do |line|
170
170
  line = parse_line(line)
171
171
  parsed_access_log << line if line
172
172
  end
@@ -183,8 +183,13 @@ class Fluent::ElbAccessLogInput < Fluent::Input
183
183
 
184
184
  parse_request!(record)
185
185
 
186
- time = Time.parse(record['timestamp']) rescue Time.now
187
- router.emit(@tag, time.to_i, record)
186
+ begin
187
+ time = Time.parse(record['timestamp'])
188
+ router.emit(@tag, time.to_i, record)
189
+ rescue ArgumentError => e
190
+ @log.warn("#{e.message}: #{line}")
191
+ @log.warn('A record that has bad timestamp is not emitted.')
192
+ end
188
193
  end
189
194
  end
190
195
 
@@ -215,32 +220,6 @@ class Fluent::ElbAccessLogInput < Fluent::Input
215
220
  parsed
216
221
  end
217
222
 
218
- # This method is required because fields of user-agent are sometimes separated
219
- # to several lines like flollowing example,
220
- # 2017-06-07T22:47:14.827494Z baby 162.243.126.163:37036 10.6.49.1:80 0.000042 0.004133 0.00002 301 301 0 232 "GET http://example.com:80/ HTTP/1.0" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133
221
- # Safari/537.36
222
- #" - -
223
- def normalize_line_feeds(str)
224
- in_quotation = false
225
- normalized_str = ''
226
- previous_ch = nil
227
-
228
- str.each_char do |current_ch|
229
- if in_quotation && current_ch == "\n"
230
- normalized_str << ' '
231
- else
232
- normalized_str << current_ch
233
- end
234
-
235
- if current_ch == '"' && previous_ch != '"'
236
- in_quotation = !in_quotation
237
- end
238
- previous_ch = current_ch
239
- end
240
-
241
- normalized_str
242
- end
243
-
244
223
  def sampling(access_log)
245
224
  access_log.split("\n").each_with_index.select {|row, i| (i % @sampling_interval).zero? }.map {|row, i| row }.join("\n")
246
225
  end
@@ -1,3 +1,3 @@
1
1
  module FluentPluginElbAccessLog
2
- VERSION = '0.3.5'
2
+ VERSION = '0.3.6.beta1'
3
3
  end
@@ -678,68 +678,4 @@ describe Fluent::ElbAccessLogInput do
678
678
 
679
679
  it { is_expected.to eq expected_emits }
680
680
  end
681
-
682
- context 'when a record has a line feed in an user-agent quotation' do
683
- let(:today_access_log) do
684
- <<-'EOS'
685
- 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" "Dummy user agent
686
- ""7.30.0""
687
- - " ssl_cipher ssl_protocol
688
- EOS
689
- end
690
-
691
- before do
692
- expect(client).to receive(:list_objects).with(bucket: s3_bucket, prefix: yesterday_prefix) { [] }
693
- expect(client).to receive(:list_objects).with(bucket: s3_bucket, prefix: tomorrow_prefix) { [] }
694
-
695
- expect(client).to receive(:list_objects).with(bucket: s3_bucket, prefix: today_prefix) do
696
- [double('today_objects', contents: [double('today_object', key: today_object_key)])]
697
- end
698
-
699
- expect(client).to receive(:get_object).with(bucket: s3_bucket, key: today_object_key) do
700
- double('today_s3_object', body: StringIO.new(today_access_log))
701
- end
702
-
703
- expect(driver.instance).to receive(:save_timestamp).with(today)
704
- expect(driver.instance).to receive(:save_history)
705
-
706
- driver.run
707
- end
708
-
709
- let(:expected_emits) do
710
- [["elb.access_log",
711
- Time.parse('2015-05-24 19:55:36 UTC').to_i,
712
- {"timestamp"=>"2015-05-24T19:55:36.000000Z",
713
- "elb"=>"hoge",
714
- "client"=>"14.14.124.20",
715
- "client_port"=>57673,
716
- "backend"=>"10.0.199.184",
717
- "backend_port"=>80,
718
- "request_processing_time"=>5.3e-05,
719
- "backend_processing_time"=>0.000913,
720
- "response_processing_time"=>3.6e-05,
721
- "elb_status_code"=>200,
722
- "backend_status_code"=>200,
723
- "received_bytes"=>0,
724
- "sent_bytes"=>3,
725
- "request"=>
726
- "GET http://hoge-1876938939.ap-northeast-1.elb.amazonaws.com:80/ HTTP/1.1",
727
- "user_agent"=>'Dummy user agent "7.30.0" - ',
728
- "ssl_cipher"=>"ssl_cipher",
729
- "ssl_protocol"=>"ssl_protocol",
730
- "request.method"=>"GET",
731
- "request.uri"=>
732
- "http://hoge-1876938939.ap-northeast-1.elb.amazonaws.com:80/",
733
- "request.http_version"=>"HTTP/1.1",
734
- "request.uri.scheme"=>"http",
735
- "request.uri.user"=>nil,
736
- "request.uri.host"=>"hoge-1876938939.ap-northeast-1.elb.amazonaws.com",
737
- "request.uri.port"=>80,
738
- "request.uri.path"=>"/",
739
- "request.uri.query"=>nil,
740
- "request.uri.fragment"=>nil}]]
741
- end
742
-
743
- it { is_expected.to eq expected_emits }
744
- end
745
681
  end
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.3.5
4
+ version: 0.3.6.beta1
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-06-12 00:00:00.000000000 Z
11
+ date: 2017-06-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd
@@ -157,9 +157,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
157
157
  version: '0'
158
158
  required_rubygems_version: !ruby/object:Gem::Requirement
159
159
  requirements:
160
- - - ">="
160
+ - - ">"
161
161
  - !ruby/object:Gem::Version
162
- version: '0'
162
+ version: 1.3.1
163
163
  requirements: []
164
164
  rubyforge_project:
165
165
  rubygems_version: 2.6.11