fluent-plugin-cloudwatch-logs 0.0.6 → 0.0.7
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: 26d61c290a6fd56f27524732758ea6e4f8cacd96
|
4
|
+
data.tar.gz: 678b4500dc46217e141328d3cd915470a691a2ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7b6d98c07e99f57022f041d1d4c60738bf847aea9512f8bed75c47de7f25fd5dca7ca3b867289784eb08901e6312f98fe3b929edb7022ed9b2032ca7b52796a9
|
7
|
+
data.tar.gz: 8e86a20a0f129546c5300af5811d8f0d0d7d50907bc5622fe44fa03e8115669d8eb5411339533be5f39f0eb4b9733df4a8ced4235e6ca7ffe29c22f6f544bc90
|
@@ -12,6 +12,8 @@ module Fluent
|
|
12
12
|
config_param :max_message_length, :integer, :default => nil
|
13
13
|
config_param :use_tag_as_group, :bool, :default => false
|
14
14
|
|
15
|
+
MAX_EVENTS_SIZE = 30720
|
16
|
+
|
15
17
|
unless method_defined?(:log)
|
16
18
|
define_method(:log) { $log }
|
17
19
|
end
|
@@ -70,8 +72,9 @@ module Fluent
|
|
70
72
|
message = record.to_json
|
71
73
|
end
|
72
74
|
|
75
|
+
message.force_encoding('ASCII-8BIT')
|
76
|
+
|
73
77
|
if @max_message_length
|
74
|
-
message.force_encoding('ASCII-8BIT')
|
75
78
|
message = message.slice(0, @max_message_length)
|
76
79
|
end
|
77
80
|
|
@@ -80,7 +83,7 @@ module Fluent
|
|
80
83
|
# The log events in the batch must be in chronological ordered by their timestamp.
|
81
84
|
# http://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutLogEvents.html
|
82
85
|
events = events.sort_by {|e| e[:timestamp] }
|
83
|
-
|
86
|
+
put_events_by_chunk(group_name, events)
|
84
87
|
}
|
85
88
|
end
|
86
89
|
|
@@ -93,6 +96,25 @@ module Fluent
|
|
93
96
|
@sequence_tokens[group_name][stream_name] = token
|
94
97
|
end
|
95
98
|
|
99
|
+
def put_events_by_chunk(group_name, events)
|
100
|
+
chunk = []
|
101
|
+
|
102
|
+
# The maximum batch size is 32,768 bytes, and this size is calculated as the sum of all event messages in UTF-8, plus 26 bytes for each log event.
|
103
|
+
# http://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutLogEvents.html
|
104
|
+
while event = events.shift
|
105
|
+
if (chunk + [event]).inject(0) {|sum, e| sum + e[:message].length } > MAX_EVENTS_SIZE
|
106
|
+
put_events(group_name, chunk)
|
107
|
+
chunk = [event]
|
108
|
+
else
|
109
|
+
chunk << event
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
unless chunk.empty?
|
114
|
+
put_events(group_name, chunk)
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
96
118
|
def put_events(group_name, events)
|
97
119
|
args = {
|
98
120
|
log_events: events,
|