fluent-plugin-cloudwatch-logs 0.2.2 → 0.2.3

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: 7baf9a45fc12d45a5ecf04306e5717b17fdb718c
4
- data.tar.gz: a145ed2460f880160485ab59e6323d9d2e0bed43
3
+ metadata.gz: 5082b725cf548ffea0fb7e779c6c24a4d7bb7909
4
+ data.tar.gz: 6a8dbc8986550ec45e9fb3518316f19d7267ac8e
5
5
  SHA512:
6
- metadata.gz: d2bacc619ec53344851d7c26f470202f8e35bc052c6bc15a72e1ef150fc8ece162c8b127f3cbdd95be38332df70ada8b5e634190a38aae230400b7e67b820970
7
- data.tar.gz: 561e946c9445d3bdce36c5a3ab00917ad3ae70daacad75545a4a936c73ad130dcee0ad6704c0e19b12ac38c019e471ce800844cb6978827bf1816ffcd95c00fb
6
+ metadata.gz: f8321eeaa7a481dae684a5908446782a5ba570b1bcc9bbeec86a63d4a365340923a4478536a471a4480aa32b6017a537c5023ee87dd5d0144d62cab252f0c6fd
7
+ data.tar.gz: c57ab7ca6be0756ad4377b3b7cf12cc69b6f4e141b82c5c5cc664fe493fe22f705758c5e3c4be2d00fcec55d98c892c8c325c3f17b453acd899b7ccf266b01cb
@@ -2,7 +2,7 @@ module Fluent
2
2
  module Plugin
3
3
  module Cloudwatch
4
4
  module Logs
5
- VERSION = "0.2.2"
5
+ VERSION = "0.2.3"
6
6
  end
7
7
  end
8
8
  end
@@ -25,6 +25,7 @@ module Fluent
25
25
  config_param :http_proxy, :string, default: nil
26
26
 
27
27
  MAX_EVENTS_SIZE = 1_048_576
28
+ EVENT_HEADER_SIZE = 26
28
29
 
29
30
  unless method_defined?(:log)
30
31
  define_method(:log) { $log }
@@ -158,25 +159,30 @@ module Fluent
158
159
 
159
160
  # The maximum batch size is 1,048,576 bytes, and this size is calculated as the sum of all event messages in UTF-8, plus 26 bytes for each log event.
160
161
  # http://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutLogEvents.html
162
+ total_bytesize = 0
161
163
  while event = events.shift
162
164
  new_chunk = chunk + [event]
165
+ event_bytesize = event[:message].bytesize + EVENT_HEADER_SIZE
166
+
163
167
  chunk_span_too_big = new_chunk.size > 1 && new_chunk[-1][:timestamp] - new_chunk[0][:timestamp] >= 1000 * 60 * 60 * 24
164
- chunk_too_big = new_chunk.inject(0) {|sum, e| sum + e[:message].bytesize + 26 } > MAX_EVENTS_SIZE
168
+ chunk_too_big = total_bytesize + event_bytesize > MAX_EVENTS_SIZE
165
169
  chunk_too_long = @max_events_per_batch && chunk.size >= @max_events_per_batch
166
170
  if chunk_too_big or chunk_span_too_big or chunk_too_long
167
- put_events(group_name, stream_name, chunk)
171
+ put_events(group_name, stream_name, chunk, total_bytesize)
168
172
  chunk = [event]
173
+ total_bytesize = event_bytesize
169
174
  else
170
175
  chunk << event
176
+ total_bytesize += event_bytesize
171
177
  end
172
178
  end
173
179
 
174
180
  unless chunk.empty?
175
- put_events(group_name, stream_name, chunk)
181
+ put_events(group_name, stream_name, chunk, total_bytesize)
176
182
  end
177
183
  end
178
184
 
179
- def put_events(group_name, stream_name, events)
185
+ def put_events(group_name, stream_name, events, events_bytesize)
180
186
  args = {
181
187
  log_events: events,
182
188
  log_group_name: group_name,
@@ -185,6 +191,13 @@ module Fluent
185
191
  token = next_sequence_token(group_name, stream_name)
186
192
  args[:sequence_token] = token if token
187
193
 
194
+ log.debug "Calling PutLogEvents API", {
195
+ "group" => group_name,
196
+ "stream" => stream_name,
197
+ "events_count" => events.size,
198
+ "events_bytesize" => events_bytesize,
199
+ }
200
+
188
201
  response = @logs.put_log_events(args)
189
202
  store_next_sequence_token(group_name, stream_name, response.next_sequence_token)
190
203
  end
@@ -51,6 +51,8 @@ class CloudwatchLogsOutputTest < Test::Unit::TestCase
51
51
  assert_equal('{"cloudwatch":"logs1"}', events[0].message)
52
52
  assert_equal((time.to_i + 1) * 1000, events[1].timestamp)
53
53
  assert_equal('{"cloudwatch":"logs2"}', events[1].message)
54
+
55
+ assert_match(/Calling PutLogEvents API/, d.instance.log.logs[0])
54
56
  end
55
57
 
56
58
  def test_write_utf8
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.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryota Arai
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-29 00:00:00.000000000 Z
11
+ date: 2016-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd