fluent-plugin-kubernetes-metrics 1.1.12 → 1.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +16 -16
- data/VERSION +1 -1
- data/fluent-plugin-kubernetes-metrics.gemspec +2 -2
- data/lib/fluent/plugin/in_kubernetes_metrics.rb +14 -1
- data/metrics-information.md +1 -1
- data/test/plugin/test_in_kubernetes_metrics.rb +24 -0
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c8cc8ed0ac2d0a4e52276aef23ec9e9cebb7659d9d2d1ad8bce83f9d88a4220c
|
4
|
+
data.tar.gz: c22c687bfc5ea76e5f3ee70a0f4aa0838af5e83e8b6a939faff4e0f34b84e2ae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4c9425096d61afd78cee9a42169e74d2f22dd8512699fe960b92b0b8ceffa72de0a2b09ab9b811fcbcd6f11085a6c7f32259e95fd1da92d1cd0507b22ce3f99b
|
7
|
+
data.tar.gz: 8c7e6f37ea8134cda37bd52347f5cacee5c8d8b9c84a75c899b0938551a027cf737816892ce1156f7f6f215679c05b85d6c3256546b3051be4e659aa0d68ff4f
|
data/Gemfile.lock
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
fluent-plugin-kubernetes-metrics (1.1
|
4
|
+
fluent-plugin-kubernetes-metrics (1.2.1)
|
5
5
|
fluentd (>= 1.9.1)
|
6
6
|
kubeclient (~> 4.9.3)
|
7
|
-
multi_json (~> 1.14
|
8
|
-
oj (~> 3.10
|
7
|
+
multi_json (~> 1.14)
|
8
|
+
oj (~> 3.10)
|
9
9
|
|
10
10
|
GEM
|
11
11
|
remote: https://rubygems.org/
|
@@ -23,12 +23,12 @@ GEM
|
|
23
23
|
ffi-compiler (1.0.1)
|
24
24
|
ffi (>= 1.0.0)
|
25
25
|
rake
|
26
|
-
fluentd (1.
|
26
|
+
fluentd (1.15.3)
|
27
27
|
bundler
|
28
28
|
cool.io (>= 1.4.5, < 2.0.0)
|
29
29
|
http_parser.rb (>= 0.5.1, < 0.9.0)
|
30
30
|
msgpack (>= 1.3.1, < 2.0.0)
|
31
|
-
serverengine (>= 2.
|
31
|
+
serverengine (>= 2.3.0, < 3.0.0)
|
32
32
|
sigdump (~> 0.2.2)
|
33
33
|
strptime (>= 0.2.4, < 1.0.0)
|
34
34
|
tzinfo (>= 1.0, < 3.0)
|
@@ -42,14 +42,14 @@ GEM
|
|
42
42
|
http-form_data (~> 2.2)
|
43
43
|
http-parser (~> 1.2.0)
|
44
44
|
http-accept (1.7.0)
|
45
|
-
http-cookie (1.0.
|
45
|
+
http-cookie (1.0.5)
|
46
46
|
domain_name (~> 0.5)
|
47
47
|
http-form_data (2.3.0)
|
48
48
|
http-parser (1.2.3)
|
49
49
|
ffi-compiler (>= 1.0, < 2.0)
|
50
50
|
http_parser.rb (0.8.0)
|
51
51
|
json (2.6.1)
|
52
|
-
jsonpath (1.1.
|
52
|
+
jsonpath (1.1.2)
|
53
53
|
multi_json
|
54
54
|
kubeclient (4.9.3)
|
55
55
|
http (>= 3.0, < 5.0)
|
@@ -59,10 +59,10 @@ GEM
|
|
59
59
|
mime-types (3.4.1)
|
60
60
|
mime-types-data (~> 3.2015)
|
61
61
|
mime-types-data (3.2022.0105)
|
62
|
-
msgpack (1.
|
63
|
-
multi_json (1.
|
62
|
+
msgpack (1.6.0)
|
63
|
+
multi_json (1.15.0)
|
64
64
|
netrc (0.11.0)
|
65
|
-
oj (3.
|
65
|
+
oj (3.13.23)
|
66
66
|
power_assert (2.0.1)
|
67
67
|
public_suffix (4.0.6)
|
68
68
|
rake (13.0.6)
|
@@ -73,7 +73,7 @@ GEM
|
|
73
73
|
mime-types (>= 1.16, < 4.0)
|
74
74
|
netrc (~> 0.8)
|
75
75
|
rexml (3.2.5)
|
76
|
-
serverengine (2.
|
76
|
+
serverengine (2.3.0)
|
77
77
|
sigdump (~> 0.2.2)
|
78
78
|
sigdump (0.2.4)
|
79
79
|
simplecov (0.16.1)
|
@@ -84,19 +84,19 @@ GEM
|
|
84
84
|
strptime (0.2.5)
|
85
85
|
test-unit (3.3.9)
|
86
86
|
power_assert
|
87
|
-
tzinfo (2.0.
|
87
|
+
tzinfo (2.0.5)
|
88
88
|
concurrent-ruby (~> 1.0)
|
89
|
-
tzinfo-data (1.2022.
|
89
|
+
tzinfo-data (1.2022.6)
|
90
90
|
tzinfo (>= 1.0.0)
|
91
91
|
unf (0.1.4)
|
92
92
|
unf_ext
|
93
|
-
unf_ext (0.0.8.
|
93
|
+
unf_ext (0.0.8.2)
|
94
94
|
webmock (3.5.1)
|
95
95
|
addressable (>= 2.3.6)
|
96
96
|
crack (>= 0.3.2)
|
97
97
|
hashdiff
|
98
98
|
webrick (1.7.0)
|
99
|
-
yajl-ruby (1.4.
|
99
|
+
yajl-ruby (1.4.3)
|
100
100
|
|
101
101
|
PLATFORMS
|
102
102
|
ruby
|
@@ -110,4 +110,4 @@ DEPENDENCIES
|
|
110
110
|
webmock (~> 3.5.1)
|
111
111
|
|
112
112
|
BUNDLED WITH
|
113
|
-
2.3.
|
113
|
+
2.3.26
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.1
|
1
|
+
1.2.1
|
@@ -26,6 +26,6 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.add_development_dependency 'webmock', '~> 3.5.1'
|
27
27
|
spec.add_runtime_dependency 'fluentd', '>= 1.9.1'
|
28
28
|
spec.add_runtime_dependency 'kubeclient', '~> 4.9.3'
|
29
|
-
spec.add_runtime_dependency 'multi_json', '~> 1.14
|
30
|
-
spec.add_runtime_dependency 'oj', '~> 3.10
|
29
|
+
spec.add_runtime_dependency 'multi_json', '~> 1.14'
|
30
|
+
spec.add_runtime_dependency 'oj', '~> 3.10'
|
31
31
|
end
|
@@ -17,6 +17,7 @@ require 'time'
|
|
17
17
|
require 'fluent/plugin/input'
|
18
18
|
require 'kubeclient'
|
19
19
|
require 'multi_json'
|
20
|
+
require 'resolv'
|
20
21
|
|
21
22
|
module Fluent
|
22
23
|
module Plugin
|
@@ -76,6 +77,8 @@ module Fluent
|
|
76
77
|
def configure(conf)
|
77
78
|
super
|
78
79
|
|
80
|
+
@kubelet_address = "[#{@kubelet_address}]" if @kubelet_address =~ Resolv::IPv6::Regex
|
81
|
+
|
79
82
|
if @use_rest_client
|
80
83
|
raise Fluentd::ConfigError, 'node_name is required' if @node_name.nil? || @node_name.empty?
|
81
84
|
else
|
@@ -136,6 +139,7 @@ module Fluent
|
|
136
139
|
if @kubernetes_url.nil?
|
137
140
|
# Use Kubernetes default service account if we're in a pod.
|
138
141
|
env_host = ENV['KUBERNETES_SERVICE_HOST']
|
142
|
+
env_host = "[#{env_host}]" if env_host =~ Resolv::IPv6::Regex
|
139
143
|
env_port = ENV['KUBERNETES_SERVICE_PORT']
|
140
144
|
if env_host && env_port
|
141
145
|
@kubernetes_url = "https://#{env_host}:#{env_port}/api/"
|
@@ -166,7 +170,7 @@ module Fluent
|
|
166
170
|
}
|
167
171
|
|
168
172
|
auth_options = {}
|
169
|
-
auth_options[:
|
173
|
+
auth_options[:bearer_token_file] = @bearer_token_file if @bearer_token_file
|
170
174
|
|
171
175
|
@client = Kubeclient::Client.new(
|
172
176
|
@kubernetes_url, 'v1',
|
@@ -244,6 +248,11 @@ module Fluent
|
|
244
248
|
ssl_options
|
245
249
|
end
|
246
250
|
|
251
|
+
# This method is used to refresh the authorization token for kubeclient
|
252
|
+
def update_kubeclient_header
|
253
|
+
@client.headers[:Authorization] = 'Bearer ' + File.read(@bearer_token_file) if @bearer_token_file
|
254
|
+
end
|
255
|
+
|
247
256
|
# This method is used to set the options for sending a request to the kubelet api
|
248
257
|
def request_options
|
249
258
|
options = { method: 'get', url: @kubelet_url }
|
@@ -677,6 +686,7 @@ module Fluent
|
|
677
686
|
response = RestClient::Request.execute request_options
|
678
687
|
handle_response(response)
|
679
688
|
else
|
689
|
+
update_kubeclient_header
|
680
690
|
@node_names.each do |node|
|
681
691
|
response = summary_proxy_api(node).get(@client.headers)
|
682
692
|
handle_response(response)
|
@@ -688,6 +698,7 @@ module Fluent
|
|
688
698
|
if @use_rest_client
|
689
699
|
response_stats = RestClient::Request.execute request_options_stats
|
690
700
|
else
|
701
|
+
update_kubeclient_header
|
691
702
|
@node_names.each do |node|
|
692
703
|
@node_name = node
|
693
704
|
response_stats = stats_proxy_api(node).get(@client.headers)
|
@@ -703,6 +714,7 @@ module Fluent
|
|
703
714
|
response_stats = RestClient::Request.execute request_options_stats
|
704
715
|
handle_stats_response(response_stats)
|
705
716
|
else
|
717
|
+
update_kubeclient_header
|
706
718
|
@node_names.each do |node|
|
707
719
|
@node_name = node
|
708
720
|
response_stats = stats_proxy_api(node).get(@client.headers)
|
@@ -716,6 +728,7 @@ module Fluent
|
|
716
728
|
response_cadvisor = RestClient::Request.execute cadvisor_request_options
|
717
729
|
handle_cadvisor_response(response_cadvisor)
|
718
730
|
else
|
731
|
+
update_kubeclient_header
|
719
732
|
@node_names.each do |node|
|
720
733
|
response_cadvisor = cadvisor_proxy_api(node).get(@client.headers)
|
721
734
|
handle_cadvisor_response(response_cadvisor)
|
data/metrics-information.md
CHANGED
@@ -109,6 +109,30 @@ class KubernetesMetricsInputTest < Test::Unit::TestCase
|
|
109
109
|
assert_equal true, d.instance.use_rest_client
|
110
110
|
end
|
111
111
|
|
112
|
+
test 'IPv6 node configuration' do
|
113
|
+
IPv6_CONFIG = %(
|
114
|
+
type kubernetes_metrics
|
115
|
+
node_name generics-aws-node-name
|
116
|
+
tag kube.*
|
117
|
+
insecure_ssl true
|
118
|
+
interval 10s
|
119
|
+
use_rest_client true
|
120
|
+
use_rest_client_ssl false
|
121
|
+
kubelet_port 10_255
|
122
|
+
kubelet_address fd55:4d62:e00f::1
|
123
|
+
)
|
124
|
+
assert_nothing_raised(Fluent::ConfigError) do
|
125
|
+
create_driver(IPv6_CONFIG)
|
126
|
+
end
|
127
|
+
|
128
|
+
d = create_driver(IPv6_CONFIG)
|
129
|
+
assert_equal '[fd55:4d62:e00f::1]', d.instance.kubelet_address
|
130
|
+
assert_equal 'http://[fd55:4d62:e00f::1]:10255/stats/summary', d.instance.instance_variable_get('@kubelet_url')
|
131
|
+
assert_equal 'http://[fd55:4d62:e00f::1]:10255/stats', d.instance.instance_variable_get('@kubelet_url_stats')
|
132
|
+
assert_equal 'http://[fd55:4d62:e00f::1]:10255/metrics/cadvisor', d.instance.instance_variable_get('@cadvisor_url')
|
133
|
+
|
134
|
+
end
|
135
|
+
|
112
136
|
sub_test_case 'node_unit_tests' do
|
113
137
|
test 'test_emit_cpu_metrics' do
|
114
138
|
assert_not_nil @@hash_map_test.key?('kube.node.cpu.usage')
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-kubernetes-metrics
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1
|
4
|
+
version: 1.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Splunk Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-11-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -114,28 +114,28 @@ dependencies:
|
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 1.14
|
117
|
+
version: '1.14'
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 1.14
|
124
|
+
version: '1.14'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: oj
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
129
|
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: 3.10
|
131
|
+
version: '3.10'
|
132
132
|
type: :runtime
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version: 3.10
|
138
|
+
version: '3.10'
|
139
139
|
description: A fluentd input plugin that collects node and container metrics from
|
140
140
|
a kubernetes cluster.
|
141
141
|
email:
|
@@ -180,6 +180,6 @@ signing_key:
|
|
180
180
|
specification_version: 4
|
181
181
|
summary: A fluentd input plugin that collects kubernetes cluster metrics.
|
182
182
|
test_files:
|
183
|
-
- test/helper.rb
|
184
|
-
- test/plugin/test_missing_timestamps.rb
|
185
183
|
- test/plugin/test_in_kubernetes_metrics.rb
|
184
|
+
- test/plugin/test_missing_timestamps.rb
|
185
|
+
- test/helper.rb
|