fluent-plugin-cloudwatch-logs 0.4.1 → 0.4.2.pre
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b61338555b31dcd2adc46c2942735ec5f06e3adb
|
4
|
+
data.tar.gz: e7fb2aa5337980e1f417577f920ee209f8692f41
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d762517f069ed20970b7cae2c7ed5f7969c8a917136de6a0327fa7375789886f42225e794faa01340cf99b6ec063fb9d2a8ee3793ead4ca9a32425bdb1819d65
|
7
|
+
data.tar.gz: 9a6373471d2d97b995de4c8911756ea7f6cc87702d4454c25de77f0c6ad75d8d31e88289867e1b7b73033f20dc546fd691b1b07bcfd634329dd702ba05097921
|
@@ -102,8 +102,8 @@ module Fluent
|
|
102
102
|
|
103
103
|
if @use_log_stream_name_prefix
|
104
104
|
log_streams = describe_log_streams
|
105
|
-
log_streams.each do |
|
106
|
-
log_stream_name =
|
105
|
+
log_streams.each do |log_stream|
|
106
|
+
log_stream_name = log_stream.log_stream_name
|
107
107
|
events = get_events(log_stream_name)
|
108
108
|
events.each do |event|
|
109
109
|
emit(log_stream_name, event)
|
@@ -151,7 +151,7 @@ module Fluent
|
|
151
151
|
request[:log_stream_name_prefix] = @log_stream_name
|
152
152
|
response = @logs.describe_log_streams(request)
|
153
153
|
if log_streams
|
154
|
-
log_streams
|
154
|
+
log_streams.concat(response.log_streams)
|
155
155
|
else
|
156
156
|
log_streams = response.log_streams
|
157
157
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'fluent/output'
|
2
|
+
require 'thread'
|
2
3
|
|
3
4
|
module Fluent
|
4
5
|
require 'fluent/mixin/config_placeholders'
|
@@ -28,6 +29,7 @@ module Fluent
|
|
28
29
|
config_param :put_log_events_retry_wait, :time, default: 1.0
|
29
30
|
config_param :put_log_events_retry_limit, :integer, default: 17
|
30
31
|
config_param :put_log_events_disable_retry_limit, :bool, default: false
|
32
|
+
config_param :concurrency, :integer, default: 1
|
31
33
|
|
32
34
|
MAX_EVENTS_SIZE = 1_048_576
|
33
35
|
MAX_EVENT_SIZE = 256 * 1024
|
@@ -68,6 +70,7 @@ module Fluent
|
|
68
70
|
options[:http_proxy] = @http_proxy if @http_proxy
|
69
71
|
@logs ||= Aws::CloudWatchLogs::Client.new(options)
|
70
72
|
@sequence_tokens = {}
|
73
|
+
@store_next_sequence_token_mutex = Mutex.new
|
71
74
|
end
|
72
75
|
|
73
76
|
def format(tag, time, record)
|
@@ -75,6 +78,8 @@ module Fluent
|
|
75
78
|
end
|
76
79
|
|
77
80
|
def write(chunk)
|
81
|
+
queue = Thread::Queue.new
|
82
|
+
|
78
83
|
chunk.enum_for(:msgpack_each).select {|tag, time, record|
|
79
84
|
if record.nil?
|
80
85
|
log.warn "record is nil (tag=#{tag})"
|
@@ -156,8 +161,22 @@ module Fluent
|
|
156
161
|
# The log events in the batch must be in chronological ordered by their timestamp.
|
157
162
|
# http://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutLogEvents.html
|
158
163
|
events = events.sort_by {|e| e[:timestamp] }
|
159
|
-
|
164
|
+
|
165
|
+
queue << [group_name, stream_name, events]
|
160
166
|
}
|
167
|
+
|
168
|
+
@concurrency.times do
|
169
|
+
queue << nil
|
170
|
+
end
|
171
|
+
threads = @concurrency.times.map do |i|
|
172
|
+
Thread.start do
|
173
|
+
while job = queue.shift
|
174
|
+
group_name, stream_name, events = job
|
175
|
+
put_events_by_chunk(group_name, stream_name, events)
|
176
|
+
end
|
177
|
+
end
|
178
|
+
end
|
179
|
+
threads.each(&:join)
|
161
180
|
end
|
162
181
|
|
163
182
|
private
|
@@ -177,7 +196,9 @@ module Fluent
|
|
177
196
|
end
|
178
197
|
|
179
198
|
def store_next_sequence_token(group_name, stream_name, token)
|
180
|
-
@
|
199
|
+
@store_next_sequence_token_mutex.synchronize do
|
200
|
+
@sequence_tokens[group_name][stream_name] = token
|
201
|
+
end
|
181
202
|
end
|
182
203
|
|
183
204
|
def put_events_by_chunk(group_name, stream_name, events)
|
@@ -224,17 +245,20 @@ module Fluent
|
|
224
245
|
response = nil
|
225
246
|
retry_count = 0
|
226
247
|
until response
|
227
|
-
log.debug "Calling PutLogEvents API", {
|
228
|
-
"group" => group_name,
|
229
|
-
"stream" => stream_name,
|
230
|
-
"events_count" => events.size,
|
231
|
-
"events_bytesize" => events_bytesize,
|
232
|
-
"sequence_token" => token,
|
233
|
-
}
|
234
|
-
|
235
248
|
args[:sequence_token] = token if token
|
249
|
+
|
236
250
|
begin
|
251
|
+
t = Time.now
|
237
252
|
response = @logs.put_log_events(args)
|
253
|
+
log.debug "Called PutLogEvents API", {
|
254
|
+
"group" => group_name,
|
255
|
+
"stream" => stream_name,
|
256
|
+
"events_count" => events.size,
|
257
|
+
"events_bytesize" => events_bytesize,
|
258
|
+
"sequence_token" => token,
|
259
|
+
"thread" => Thread.current.object_id,
|
260
|
+
"request_sec" => Time.now - t,
|
261
|
+
}
|
238
262
|
rescue Aws::CloudWatchLogs::Errors::InvalidSequenceTokenException, Aws::CloudWatchLogs::Errors::DataAlreadyAcceptedException => err
|
239
263
|
sleep 1 # to avoid too many API calls
|
240
264
|
log_stream = find_log_stream(group_name, stream_name)
|
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.4.
|
4
|
+
version: 0.4.2.pre
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryota Arai
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-10
|
11
|
+
date: 2017-11-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|
@@ -144,12 +144,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
144
144
|
version: '0'
|
145
145
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
146
146
|
requirements:
|
147
|
-
- - "
|
147
|
+
- - ">"
|
148
148
|
- !ruby/object:Gem::Version
|
149
|
-
version:
|
149
|
+
version: 1.3.1
|
150
150
|
requirements: []
|
151
151
|
rubyforge_project:
|
152
|
-
rubygems_version: 2.6.
|
152
|
+
rubygems_version: 2.6.8
|
153
153
|
signing_key:
|
154
154
|
specification_version: 4
|
155
155
|
summary: CloudWatch Logs Plugin for Fluentd
|