fluent-plugin-cloudwatch-logs 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 11a5a24eb3978bb6d5b29d3d08cf5b49bfd9eed85e3a3b6df46adedf31e85458
4
- data.tar.gz: 1193f782abef03c1f89c18b25ccb2ad2d3d774681a5e489d860e5baefb71beb4
3
+ metadata.gz: f405e2301a22e37b9768748f88df73b9ecba6e1b5311f78992c9117b45da95f8
4
+ data.tar.gz: 51973be01ee296b0fcb5f7abb26605c0f67385fea4449b7bc301281667185406
5
5
  SHA512:
6
- metadata.gz: 4f5d00f59b8a9c9652ab7b364bb13d9a51b6bc04ba7bcf058d2fb0a5705637c6b0156e93f94bb090f8c5e270d821a42f7b5ba7190e4ed0321f87b8d7a661f280
7
- data.tar.gz: 32dd243642ac3d63ed8704a63074c611343a25c56a681d7c2ac8e298c8579c56ee82b4fe5f91d0ad6b236a0c094bfc86f3ba0f1b08fd4406e25e023dffec3c04
6
+ metadata.gz: '0439979ebd2e1e4d5bc8876ad652a1c790ff311f6857bfcf7f9a9d1748d66bea5acb01944939947ac8d1171d76faaadd40b6bf7238c32eef61efb995aa067087'
7
+ data.tar.gz: b6de5f1d520370a5a2fadba7da8960a11b3ded740155d7f6efa05db686a30bc3ed6e854274ed968ecd4a421dcbef6b01dccc259e5daa9dce3ca5570b4668163e
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["Ryota Arai"]
10
10
  spec.email = ["ryota.arai@gmail.com"]
11
11
  spec.summary = %q{CloudWatch Logs Plugin for Fluentd}
12
- spec.homepage = "https://github.com/ryotarai/fluent-plugin-cloudwatch-logs"
12
+ spec.homepage = "https://github.com/fluent-plugins-nursery/fluent-plugin-cloudwatch-logs"
13
13
  spec.license = "MIT"
14
14
 
15
15
  spec.files = `git ls-files -z`.split("\x0")
@@ -2,7 +2,7 @@ module Fluent
2
2
  module Plugin
3
3
  module Cloudwatch
4
4
  module Logs
5
- VERSION = "0.5.0"
5
+ VERSION = "0.5.1"
6
6
  end
7
7
  end
8
8
  end
@@ -4,6 +4,7 @@ require 'yajl'
4
4
 
5
5
  module Fluent::Plugin
6
6
  class CloudwatchLogsOutput < Output
7
+ include Fluent::MessagePackFactory::Mixin
7
8
  Fluent::Plugin.register_output('cloudwatch_logs', self)
8
9
 
9
10
  helpers :compat_parameters, :inject
@@ -12,6 +13,7 @@ module Fluent::Plugin
12
13
 
13
14
  config_param :aws_key_id, :string, :default => nil, :secret => true
14
15
  config_param :aws_sec_key, :string, :default => nil, :secret => true
16
+ config_param :aws_instance_profile_credentials_retries, :integer, default: nil
15
17
  config_param :aws_use_sts, :bool, default: false
16
18
  config_param :aws_sts_role_arn, :string, default: nil
17
19
  config_param :aws_sts_session_name, :string, default: 'fluentd'
@@ -83,6 +85,7 @@ module Fluent::Plugin
83
85
  options = {}
84
86
  options[:region] = @region if @region
85
87
  options[:endpoint] = @endpoint if @endpoint
88
+ options[:instance_profile_credentials_retries] = @aws_instance_profile_credentials_retries if @aws_instance_profile_credentials_retries
86
89
 
87
90
  if @aws_use_sts
88
91
  Aws.config[:region] = options[:region]
@@ -108,7 +111,7 @@ module Fluent::Plugin
108
111
 
109
112
  def format(tag, time, record)
110
113
  record = inject_values_to_record(tag, time, record)
111
- [tag, time, record].to_msgpack
114
+ msgpack_packer.pack([tag, time, record]).to_s
112
115
  end
113
116
 
114
117
  def formatted_to_msgpack_binary?
@@ -208,7 +211,7 @@ module Fluent::Plugin
208
211
 
209
212
  events = []
210
213
  rs.each do |t, time, record|
211
- time_ms = time * 1000
214
+ time_ms = (time.to_f * 1000).floor
212
215
 
213
216
  scrub_record!(record)
214
217
  if @message_keys
@@ -50,6 +50,7 @@ class CloudwatchLogsOutputTest < Test::Unit::TestCase
50
50
  time = event_time
51
51
  d.run(default_tag: fluentd_tag, flush: true) do
52
52
  d.feed(time, {'cloudwatch' => 'logs1'})
53
+ # Addition converts EventTime to seconds
53
54
  d.feed(time + 1, {'cloudwatch' => 'logs2'})
54
55
  end
55
56
 
@@ -58,12 +59,12 @@ class CloudwatchLogsOutputTest < Test::Unit::TestCase
58
59
  logs = d.logs
59
60
  events = get_log_events
60
61
  assert_equal(2, events.size)
61
- assert_equal(time.to_i * 1000, events[0].timestamp)
62
+ assert_equal((time.to_f * 1000).floor, events[0].timestamp)
62
63
  assert_equal('{"cloudwatch":"logs1"}', events[0].message)
63
64
  assert_equal((time.to_i + 1) * 1000, events[1].timestamp)
64
65
  assert_equal('{"cloudwatch":"logs2"}', events[1].message)
65
66
 
66
- assert(logs.any?{|log| log.include?("Calling PutLogEvents API") })
67
+ assert(logs.any?{|log| log.include?("Called PutLogEvents API") })
67
68
  end
68
69
 
69
70
  def test_write_utf8
@@ -79,7 +80,7 @@ class CloudwatchLogsOutputTest < Test::Unit::TestCase
79
80
 
80
81
  events = get_log_events
81
82
  assert_equal(1, events.size)
82
- assert_equal(time.to_i * 1000, events[0].timestamp)
83
+ assert_equal((time.to_f * 1000).floor, events[0].timestamp)
83
84
  assert_equal('{"cloudwatch":"これは日本語です"}', events[0].message)
84
85
  end
85
86
 
@@ -105,7 +106,7 @@ class CloudwatchLogsOutputTest < Test::Unit::TestCase
105
106
  assert_equal(3, events.size)
106
107
  assert_equal((time.to_i - 60 * 60 * 25) * 1000, events[0].timestamp)
107
108
  assert_equal('{"cloudwatch":"logs0"}', events[0].message)
108
- assert_equal((time.to_i ) * 1000, events[1].timestamp)
109
+ assert_equal((time.to_f * 1000).floor, events[1].timestamp)
109
110
  assert_equal('{"cloudwatch":"logs1"}', events[1].message)
110
111
  assert_equal((time.to_i + 1) * 1000, events[2].timestamp)
111
112
  assert_equal('{"cloudwatch":"logs2"}', events[2].message)
@@ -131,7 +132,7 @@ class CloudwatchLogsOutputTest < Test::Unit::TestCase
131
132
 
132
133
  events = get_log_events
133
134
  assert_equal(2, events.size)
134
- assert_equal(time.to_i * 1000, events[0].timestamp)
135
+ assert_equal((time.to_f * 1000).floor, events[0].timestamp)
135
136
  assert_equal('message1 logs1', events[0].message)
136
137
  assert_equal((time.to_i + 1) * 1000, events[1].timestamp)
137
138
  assert_equal('message2 logs2', events[1].message)
@@ -158,7 +159,7 @@ class CloudwatchLogsOutputTest < Test::Unit::TestCase
158
159
 
159
160
  events = get_log_events
160
161
  assert_equal(2, events.size)
161
- assert_equal(time.to_i * 1000, events[0].timestamp)
162
+ assert_equal((time.to_f * 1000).floor, events[0].timestamp)
162
163
  assert_equal('message1 l', events[0].message)
163
164
  assert_equal((time.to_i + 1) * 1000, events[1].timestamp)
164
165
  assert_equal('message2 l', events[1].message)
@@ -184,7 +185,7 @@ class CloudwatchLogsOutputTest < Test::Unit::TestCase
184
185
 
185
186
  events = get_log_events(fluentd_tag)
186
187
  assert_equal(2, events.size)
187
- assert_equal(time.to_i * 1000, events[0].timestamp)
188
+ assert_equal((time.to_f * 1000).floor, events[0].timestamp)
188
189
  assert_equal('message1 logs1', events[0].message)
189
190
  assert_equal((time.to_i + 1) * 1000, events[1].timestamp)
190
191
  assert_equal('message2 logs2', events[1].message)
@@ -210,7 +211,7 @@ class CloudwatchLogsOutputTest < Test::Unit::TestCase
210
211
 
211
212
  events = get_log_events(log_group_name, fluentd_tag)
212
213
  assert_equal(2, events.size)
213
- assert_equal(time.to_i * 1000, events[0].timestamp)
214
+ assert_equal((time.to_f * 1000).floor, events[0].timestamp)
214
215
  assert_equal('message1 logs1', events[0].message)
215
216
  assert_equal((time.to_i + 1) * 1000, events[1].timestamp)
216
217
  assert_equal('message2 logs2', events[1].message)
@@ -237,7 +238,7 @@ class CloudwatchLogsOutputTest < Test::Unit::TestCase
237
238
 
238
239
  events = get_log_events
239
240
  assert_equal(2, events.size)
240
- assert_equal(time.to_i * 1000, events[0].timestamp)
241
+ assert_equal((time.to_f * 1000).floor, events[0].timestamp)
241
242
  assert_equal("{\"cloudwatch\":\"logs1\",\"time\":\"#{Time.at(time.to_r).utc.strftime("%Y-%m-%dT%H:%M:%SZ")}\"}", events[0].message)
242
243
  assert_equal((time.to_i + 1) * 1000, events[1].timestamp)
243
244
  assert_equal("{\"cloudwatch\":\"logs2\",\"time\":\"#{Time.at((time+1).to_r).utc.strftime("%Y-%m-%dT%H:%M:%SZ")}\"}", events[1].message)
@@ -264,7 +265,7 @@ class CloudwatchLogsOutputTest < Test::Unit::TestCase
264
265
 
265
266
  events = get_log_events
266
267
  assert_equal(2, events.size)
267
- assert_equal(time.to_i * 1000, events[0].timestamp)
268
+ assert_equal((time.to_f * 1000).floor, events[0].timestamp)
268
269
  assert_equal("{\"cloudwatch\":\"logs1\",\"time\":\"#{Time.at(time.to_r).strftime("%Y-%m-%dT%H:%M:%S%:z")}\"}", events[0].message)
269
270
  assert_equal((time.to_i + 1) * 1000, events[1].timestamp)
270
271
  assert_equal("{\"cloudwatch\":\"logs2\",\"time\":\"#{Time.at((time+1).to_r).to_time.strftime("%Y-%m-%dT%H:%M:%S%:z")}\"}", events[1].message)
@@ -298,7 +299,7 @@ class CloudwatchLogsOutputTest < Test::Unit::TestCase
298
299
 
299
300
  logs = d.logs
300
301
  # Call API once for each stream
301
- assert_equal(2, logs.select {|l| l =~ /Calling PutLogEvents API/ }.size)
302
+ assert_equal(2, logs.select {|l| l =~ /Called PutLogEvents API/ }.size)
302
303
 
303
304
  sleep 10
304
305
 
@@ -335,7 +336,7 @@ class CloudwatchLogsOutputTest < Test::Unit::TestCase
335
336
 
336
337
  events = get_log_events(log_group_name, log_stream_name)
337
338
  assert_equal(1, events.size)
338
- assert_equal(time.to_i * 1000, events[0].timestamp)
339
+ assert_equal((time.to_f * 1000).floor, events[0].timestamp)
339
340
  assert_equal({'cloudwatch' => 'logs1', 'message' => 'message1'}, JSON.parse(events[0].message))
340
341
  end
341
342
 
@@ -420,7 +421,7 @@ class CloudwatchLogsOutputTest < Test::Unit::TestCase
420
421
  end
421
422
  end
422
423
 
423
- assert_match(/failed to set retention policy for Log group/, d.instance.log.logs[0])
424
+ assert_match(/failed to set retention policy for Log group/, d.logs[0])
424
425
  end
425
426
 
426
427
  def test_log_group_aws_tags_key
@@ -529,6 +530,7 @@ class CloudwatchLogsOutputTest < Test::Unit::TestCase
529
530
 
530
531
  def test_retrying_on_throttling_exception
531
532
  resp = mock()
533
+ resp.expects(:rejected_log_events_info)
532
534
  resp.expects(:next_sequence_token)
533
535
  client = Aws::CloudWatchLogs::Client.new
534
536
  client.stubs(:put_log_events).
@@ -542,7 +544,7 @@ class CloudwatchLogsOutputTest < Test::Unit::TestCase
542
544
  end
543
545
 
544
546
  logs = d.logs
545
- assert_equal(2, logs.select {|l| l =~ /Calling PutLogEvents API/ }.size)
547
+ assert_equal(1, logs.select {|l| l =~ /Called PutLogEvents API/ }.size)
546
548
  assert_equal(1, logs.select {|l| l =~ /failed to PutLogEvents/ }.size)
547
549
  assert_equal(1, logs.select {|l| l =~ /retry succeeded/ }.size)
548
550
  end
@@ -551,7 +553,6 @@ class CloudwatchLogsOutputTest < Test::Unit::TestCase
551
553
  client = Aws::CloudWatchLogs::Client.new
552
554
  client.stubs(:put_log_events).
553
555
  raises(Aws::CloudWatchLogs::Errors::ThrottlingException.new(nil, "error"))
554
-
555
556
  time = Fluent::Engine.now
556
557
  d = create_driver(<<-EOC)
557
558
  #{default_config}
@@ -566,7 +567,7 @@ put_log_events_retry_limit 1
566
567
  end
567
568
 
568
569
  logs = d.logs
569
- assert_equal(3, logs.select {|l| l =~ /Calling PutLogEvents API/ }.size)
570
+ assert_equal(0, logs.select {|l| l =~ /Called PutLogEvents API/ }.size)
570
571
  assert_equal(3, logs.select {|l| l =~ /failed to PutLogEvents/ }.size)
571
572
  assert_equal(1, logs.select {|l| l =~ /failed to PutLogEvents and discard logs/ }.size)
572
573
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-cloudwatch-logs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryota Arai
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-25 00:00:00.000000000 Z
11
+ date: 2018-07-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd
@@ -115,7 +115,7 @@ files:
115
115
  - test/plugin/test_in_cloudwatch_logs.rb
116
116
  - test/plugin/test_out_cloudwatch_logs.rb
117
117
  - test/test_helper.rb
118
- homepage: https://github.com/ryotarai/fluent-plugin-cloudwatch-logs
118
+ homepage: https://github.com/fluent-plugins-nursery/fluent-plugin-cloudwatch-logs
119
119
  licenses:
120
120
  - MIT
121
121
  metadata: {}