fluent-plugin-vmware-log-intelligence 2.0.7 → 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 +15 -7
- data/test/helper.rb +1 -1
- data/test/plugin/test_http_client.rb +8 -8
- metadata +11 -11
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|
|
@@ -170,10 +172,12 @@ module Fluent::Plugin
|
|
170
172
|
|
171
173
|
def start
|
172
174
|
super
|
175
|
+
@log.debug "Started VMware Log Intelligence Shipper.."
|
173
176
|
end
|
174
177
|
|
175
178
|
def shutdown
|
176
179
|
super
|
180
|
+
@log.debug "Shutting Down VMware Log Intelligence Shipper.."
|
177
181
|
begin
|
178
182
|
@http_client.close if @http_client
|
179
183
|
rescue
|
@@ -181,6 +185,7 @@ module Fluent::Plugin
|
|
181
185
|
end
|
182
186
|
|
183
187
|
def write(chunk)
|
188
|
+
@log.debug "VMware Log Intelligence writing message"
|
184
189
|
is_rate_limited = (@rate_limit_msec != 0 and not @last_request_time.nil?)
|
185
190
|
if is_rate_limited and ((Time.now.to_f - @last_request_time) * 1000.0 < @rate_limit_msec)
|
186
191
|
@log.info('Dropped request due to rate limiting')
|
@@ -193,12 +198,15 @@ module Fluent::Plugin
|
|
193
198
|
end
|
194
199
|
|
195
200
|
if @http_compress
|
201
|
+
@log.debug "VMware Log Intelligence sending compressed message"
|
196
202
|
gzip_body = Zlib::GzipWriter.new(StringIO.new)
|
197
|
-
gzip_body << data
|
203
|
+
gzip_body << Yajl.dump(data)
|
204
|
+
@last_request_time = Time.now.to_f
|
198
205
|
@http_client.post(gzip_body.close.string)
|
199
|
-
else
|
206
|
+
else
|
207
|
+
@log.debug "VMware Log Intelligence sending uncompressed message"
|
200
208
|
@last_request_time = Time.now.to_f
|
201
|
-
@http_client.post(
|
209
|
+
@http_client.post(Yajl.dump(data))
|
202
210
|
end
|
203
211
|
end
|
204
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,7 +1,7 @@
|
|
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
|
@@ -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
|