fluent-plugin-vmware-log-intelligence 2.0.6 → 2.0.8
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 +4 -4
- data/VERSION +1 -1
- data/fluent-plugin-vmware-log-intelligence.gemspec +5 -5
- data/lib/fluent/plugin/http_client.rb +9 -5
- data/lib/fluent/plugin/out_vmware_log_intelligence.rb +19 -7
- data/test/helper.rb +1 -1
- data/test/plugin/test_http_client.rb +8 -8
- metadata +15 -16
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6bb5e6a75c4c18b3f33862ee57e5e07ea21407a3f1b6728962f435e9fe46c201
|
|
4
|
+
data.tar.gz: 45d0fc9bdbcda47173df89de75cb311343bf3d69a16192461032dc46480cde53
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e373b4150896aa581c46ab9787e61c981bad42fa45189b1b134e73ca15f1e730ee511a4e74abd417936428fcbeb1b26afa9697b0d2c17ee682b6ea87711595c0
|
|
7
|
+
data.tar.gz: 9b0023ff195a46ed4cdbda009edf86e63ecdc9bb5d8e3f2d78b3b51429ff12d3f11a1d76bc081796609c0ed332d0f4c81d0bea919c2eadbc099c098a243e4e3d
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2.0.
|
|
1
|
+
2.0.8
|
|
@@ -38,13 +38,13 @@ Gem::Specification.new do |s|
|
|
|
38
38
|
s.require_paths = ['lib']
|
|
39
39
|
|
|
40
40
|
s.add_dependency "fluentd", ">= 0.14.20"
|
|
41
|
-
s.add_dependency "http", ">= 0
|
|
41
|
+
s.add_dependency "http", ">= 4.0"
|
|
42
42
|
s.add_dependency "myslog", "~> 0.0"
|
|
43
43
|
s.add_dependency "fluent-plugin-mysqlslowquery", ">= 0.0.9"
|
|
44
|
-
s.add_development_dependency "rake", ">= 0.
|
|
45
|
-
s.add_development_dependency "bundler", ">=
|
|
46
|
-
s.add_development_dependency 'test-unit', '~> 3.
|
|
47
|
-
s.add_development_dependency 'webmock', '~> 3.
|
|
44
|
+
s.add_development_dependency "rake", ">= 13.0.0"
|
|
45
|
+
s.add_development_dependency "bundler", ">= 2.4.0"
|
|
46
|
+
s.add_development_dependency 'test-unit', '~> 3.5.0'
|
|
47
|
+
s.add_development_dependency 'webmock', '~> 3.10.0'
|
|
48
48
|
s.add_development_dependency 'fluent-plugin-detect-exceptions', '>= 0.0.12'
|
|
49
49
|
s.add_development_dependency 'fluent-plugin-concat', '>= 2.0.0'
|
|
50
50
|
s.add_development_dependency 'fluent-plugin-kubernetes_metadata_filter', '>= 2.0.0'
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright
|
|
1
|
+
# Copyright 2023 VMware, Inc.
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
|
3
3
|
|
|
4
4
|
module Fluent::Plugin
|
|
@@ -20,6 +20,7 @@ module Fluent::Plugin
|
|
|
20
20
|
:connect_timeout => open_timeout,
|
|
21
21
|
:read_timeout => read_timeout
|
|
22
22
|
}
|
|
23
|
+
@log.debug "VMware Log Intelligence - Timeout Options: connect timeout #{open_timeout}, read timeout #{read_timeout}"
|
|
23
24
|
|
|
24
25
|
@conn = HTTP.persistent(endpoint_url)
|
|
25
26
|
.headers(headers)
|
|
@@ -29,19 +30,21 @@ module Fluent::Plugin
|
|
|
29
30
|
@last_429_time = nil
|
|
30
31
|
end
|
|
31
32
|
|
|
32
|
-
def
|
|
33
|
+
def quota_reached
|
|
34
|
+
@log.debug "VMware Log Intelligence - Checking Rate Limit Quota"
|
|
33
35
|
if @last_429_time
|
|
34
36
|
if (Time.new - @last_429_time) < 600
|
|
35
|
-
return
|
|
37
|
+
return true
|
|
36
38
|
end
|
|
37
39
|
|
|
38
40
|
@last_429_time = nil
|
|
39
41
|
end
|
|
40
|
-
return
|
|
42
|
+
return false
|
|
41
43
|
end
|
|
42
44
|
|
|
43
45
|
def post(data)
|
|
44
|
-
if
|
|
46
|
+
if quota_reached
|
|
47
|
+
@log.debug "VMware Log Intelligence - Rate limit quota reached"
|
|
45
48
|
return
|
|
46
49
|
end
|
|
47
50
|
|
|
@@ -54,6 +57,7 @@ module Fluent::Plugin
|
|
|
54
57
|
else
|
|
55
58
|
@last_429_time = nil
|
|
56
59
|
end
|
|
60
|
+
@log.debug "VMware Log Intelligence - Response code from VMware Log Intelligence: #{response.code}"
|
|
57
61
|
|
|
58
62
|
if @statuses.include? response.code.to_i
|
|
59
63
|
# Raise an exception so that fluent will retry based on the configurations.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# Copyright (c) 2013 ablagoev
|
|
2
|
-
# Copyright
|
|
2
|
+
# Copyright 2023 VMware, Inc.
|
|
3
3
|
# SPDX-License-Identifier: MIT
|
|
4
4
|
|
|
5
5
|
|
|
@@ -41,7 +41,7 @@ module Fluent::Plugin
|
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
def validate_uri(uri_string)
|
|
44
|
-
unless uri_string =~ /^#{URI.
|
|
44
|
+
unless uri_string =~ /^#{URI::DEFAULT_PARSER.make_regexp}$/
|
|
45
45
|
fail Fluent::ConfigError, 'endpoint_url invalid'
|
|
46
46
|
end
|
|
47
47
|
|
|
@@ -56,6 +56,7 @@ module Fluent::Plugin
|
|
|
56
56
|
headers = {}
|
|
57
57
|
conf.elements.each do |element|
|
|
58
58
|
if @http_compress
|
|
59
|
+
@log.debug "VMware Log Intelligence Compression enabled"
|
|
59
60
|
set_gzip_header(element)
|
|
60
61
|
end
|
|
61
62
|
if element.name == 'headers'
|
|
@@ -102,7 +103,8 @@ module Fluent::Plugin
|
|
|
102
103
|
keys.push(key)
|
|
103
104
|
key.force_encoding("utf-8")
|
|
104
105
|
|
|
105
|
-
if value.is_a?(String)
|
|
106
|
+
if value.is_a?(String)
|
|
107
|
+
@log.debug "VMware Log Intelligence force encoding"
|
|
106
108
|
value.force_encoding("utf-8")
|
|
107
109
|
end
|
|
108
110
|
end
|
|
@@ -130,7 +132,7 @@ module Fluent::Plugin
|
|
|
130
132
|
|
|
131
133
|
def flatten_record(record, prefix=[])
|
|
132
134
|
ret = {}
|
|
133
|
-
|
|
135
|
+
@log.debug "VMware Log Intelligence flattening record"
|
|
134
136
|
case record
|
|
135
137
|
when Hash
|
|
136
138
|
record.each do |key, value|
|
|
@@ -164,12 +166,18 @@ module Fluent::Plugin
|
|
|
164
166
|
@open_timeout, @read_timeout, @log)
|
|
165
167
|
end
|
|
166
168
|
|
|
169
|
+
def multi_workers_ready?
|
|
170
|
+
true
|
|
171
|
+
end
|
|
172
|
+
|
|
167
173
|
def start
|
|
168
174
|
super
|
|
175
|
+
@log.debug "Started VMware Log Intelligence Shipper.."
|
|
169
176
|
end
|
|
170
177
|
|
|
171
178
|
def shutdown
|
|
172
179
|
super
|
|
180
|
+
@log.debug "Shutting Down VMware Log Intelligence Shipper.."
|
|
173
181
|
begin
|
|
174
182
|
@http_client.close if @http_client
|
|
175
183
|
rescue
|
|
@@ -177,6 +185,7 @@ module Fluent::Plugin
|
|
|
177
185
|
end
|
|
178
186
|
|
|
179
187
|
def write(chunk)
|
|
188
|
+
@log.debug "VMware Log Intelligence writing message"
|
|
180
189
|
is_rate_limited = (@rate_limit_msec != 0 and not @last_request_time.nil?)
|
|
181
190
|
if is_rate_limited and ((Time.now.to_f - @last_request_time) * 1000.0 < @rate_limit_msec)
|
|
182
191
|
@log.info('Dropped request due to rate limiting')
|
|
@@ -189,12 +198,15 @@ module Fluent::Plugin
|
|
|
189
198
|
end
|
|
190
199
|
|
|
191
200
|
if @http_compress
|
|
201
|
+
@log.debug "VMware Log Intelligence sending compressed message"
|
|
192
202
|
gzip_body = Zlib::GzipWriter.new(StringIO.new)
|
|
193
|
-
gzip_body << data
|
|
203
|
+
gzip_body << Yajl.dump(data)
|
|
204
|
+
@last_request_time = Time.now.to_f
|
|
194
205
|
@http_client.post(gzip_body.close.string)
|
|
195
|
-
else
|
|
206
|
+
else
|
|
207
|
+
@log.debug "VMware Log Intelligence sending uncompressed message"
|
|
196
208
|
@last_request_time = Time.now.to_f
|
|
197
|
-
@http_client.post(
|
|
209
|
+
@http_client.post(Yajl.dump(data))
|
|
198
210
|
end
|
|
199
211
|
end
|
|
200
212
|
end
|
data/test/helper.rb
CHANGED
|
@@ -10,13 +10,13 @@ class HttpClientTest < Test::Unit::TestCase
|
|
|
10
10
|
stub_request(:post, url).to_return(:status => [429, "User out of ingestion quota."])
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
-
def
|
|
13
|
+
def test_quota_reached
|
|
14
14
|
http_client = create_http_client()
|
|
15
|
-
assert_equal http_client.
|
|
15
|
+
assert_equal http_client.quota_reached, false
|
|
16
16
|
|
|
17
17
|
stub_server_out_of_quota
|
|
18
|
-
http_client.post(
|
|
19
|
-
assert_equal http_client.
|
|
18
|
+
http_client.post(Yajl.dump(sample_record()))
|
|
19
|
+
assert_equal http_client.quota_reached, true
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
def stub_server_unavailable(url=DEFAULT_URL)
|
|
@@ -72,7 +72,7 @@ class HttpClientTest < Test::Unit::TestCase
|
|
|
72
72
|
http_client = create_http_client()
|
|
73
73
|
stub_server_returns_500
|
|
74
74
|
assert_raise RuntimeError do
|
|
75
|
-
http_client.post(
|
|
75
|
+
http_client.post(Yajl.dump(sample_record()))
|
|
76
76
|
end
|
|
77
77
|
end
|
|
78
78
|
|
|
@@ -80,16 +80,16 @@ class HttpClientTest < Test::Unit::TestCase
|
|
|
80
80
|
http_client = create_http_client()
|
|
81
81
|
stub_server_raise_error
|
|
82
82
|
assert_raise IOError do
|
|
83
|
-
http_client.post(
|
|
83
|
+
http_client.post(Yajl.dump(sample_record()))
|
|
84
84
|
end
|
|
85
85
|
end
|
|
86
86
|
|
|
87
87
|
def test_post_logs
|
|
88
88
|
stub_post_logs
|
|
89
89
|
http_client = create_http_client()
|
|
90
|
-
http_client.post(
|
|
90
|
+
http_client.post(Yajl.dump(sample_record()))
|
|
91
91
|
|
|
92
92
|
stub_post_logs
|
|
93
|
-
http_client.post(
|
|
93
|
+
http_client.post(Yajl.dump(sample_record()))
|
|
94
94
|
end
|
|
95
95
|
end
|
metadata
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: fluent-plugin-vmware-log-intelligence
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.0.
|
|
4
|
+
version: 2.0.8
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Alexander Blagoev
|
|
8
8
|
- Chaur Wu
|
|
9
|
-
autorequire:
|
|
9
|
+
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
12
|
date: 2018-08-12 00:00:00.000000000 Z
|
|
@@ -31,14 +31,14 @@ dependencies:
|
|
|
31
31
|
requirements:
|
|
32
32
|
- - ">="
|
|
33
33
|
- !ruby/object:Gem::Version
|
|
34
|
-
version: 0
|
|
34
|
+
version: '4.0'
|
|
35
35
|
type: :runtime
|
|
36
36
|
prerelease: false
|
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
|
38
38
|
requirements:
|
|
39
39
|
- - ">="
|
|
40
40
|
- !ruby/object:Gem::Version
|
|
41
|
-
version: 0
|
|
41
|
+
version: '4.0'
|
|
42
42
|
- !ruby/object:Gem::Dependency
|
|
43
43
|
name: myslog
|
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -73,56 +73,56 @@ dependencies:
|
|
|
73
73
|
requirements:
|
|
74
74
|
- - ">="
|
|
75
75
|
- !ruby/object:Gem::Version
|
|
76
|
-
version: 0.
|
|
76
|
+
version: 13.0.0
|
|
77
77
|
type: :development
|
|
78
78
|
prerelease: false
|
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
|
80
80
|
requirements:
|
|
81
81
|
- - ">="
|
|
82
82
|
- !ruby/object:Gem::Version
|
|
83
|
-
version: 0.
|
|
83
|
+
version: 13.0.0
|
|
84
84
|
- !ruby/object:Gem::Dependency
|
|
85
85
|
name: bundler
|
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
|
87
87
|
requirements:
|
|
88
88
|
- - ">="
|
|
89
89
|
- !ruby/object:Gem::Version
|
|
90
|
-
version:
|
|
90
|
+
version: 2.4.0
|
|
91
91
|
type: :development
|
|
92
92
|
prerelease: false
|
|
93
93
|
version_requirements: !ruby/object:Gem::Requirement
|
|
94
94
|
requirements:
|
|
95
95
|
- - ">="
|
|
96
96
|
- !ruby/object:Gem::Version
|
|
97
|
-
version:
|
|
97
|
+
version: 2.4.0
|
|
98
98
|
- !ruby/object:Gem::Dependency
|
|
99
99
|
name: test-unit
|
|
100
100
|
requirement: !ruby/object:Gem::Requirement
|
|
101
101
|
requirements:
|
|
102
102
|
- - "~>"
|
|
103
103
|
- !ruby/object:Gem::Version
|
|
104
|
-
version: 3.
|
|
104
|
+
version: 3.5.0
|
|
105
105
|
type: :development
|
|
106
106
|
prerelease: false
|
|
107
107
|
version_requirements: !ruby/object:Gem::Requirement
|
|
108
108
|
requirements:
|
|
109
109
|
- - "~>"
|
|
110
110
|
- !ruby/object:Gem::Version
|
|
111
|
-
version: 3.
|
|
111
|
+
version: 3.5.0
|
|
112
112
|
- !ruby/object:Gem::Dependency
|
|
113
113
|
name: webmock
|
|
114
114
|
requirement: !ruby/object:Gem::Requirement
|
|
115
115
|
requirements:
|
|
116
116
|
- - "~>"
|
|
117
117
|
- !ruby/object:Gem::Version
|
|
118
|
-
version: 3.
|
|
118
|
+
version: 3.10.0
|
|
119
119
|
type: :development
|
|
120
120
|
prerelease: false
|
|
121
121
|
version_requirements: !ruby/object:Gem::Requirement
|
|
122
122
|
requirements:
|
|
123
123
|
- - "~>"
|
|
124
124
|
- !ruby/object:Gem::Version
|
|
125
|
-
version: 3.
|
|
125
|
+
version: 3.10.0
|
|
126
126
|
- !ruby/object:Gem::Dependency
|
|
127
127
|
name: fluent-plugin-detect-exceptions
|
|
128
128
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -216,7 +216,7 @@ homepage: http://github.com/vmware/fluent-plugin-vmware-log-intelligence
|
|
|
216
216
|
licenses:
|
|
217
217
|
- MIT
|
|
218
218
|
metadata: {}
|
|
219
|
-
post_install_message:
|
|
219
|
+
post_install_message:
|
|
220
220
|
rdoc_options: []
|
|
221
221
|
require_paths:
|
|
222
222
|
- lib
|
|
@@ -231,9 +231,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
231
231
|
- !ruby/object:Gem::Version
|
|
232
232
|
version: '0'
|
|
233
233
|
requirements: []
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
signing_key:
|
|
234
|
+
rubygems_version: 3.0.3.1
|
|
235
|
+
signing_key:
|
|
237
236
|
specification_version: 4
|
|
238
237
|
summary: Fluentd buffered output plugin for VMware Log Intelligence
|
|
239
238
|
test_files: []
|