fluent-plugin-kubernetes-metrics 1.1.8 → 1.1.11

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '01494a399012dc40a3a2d9597327839453e95abc642d5510ad3e423b50c9fd25'
4
- data.tar.gz: d7d5f2f45267de03f5e519b4ac48ad0b03ae9058a04f399e563c529da1664c7f
3
+ metadata.gz: 97da3c411611595761829fcf655fa1fb20e1a6012559987a1e1d963c6c4e4489
4
+ data.tar.gz: e67e0b9fdefed8324603c2c05ba1715a8d15bc435c229ab757ca5b1741b184fc
5
5
  SHA512:
6
- metadata.gz: 870c5b311bd3157f485872149ae1d360cbfc0e44a804c92863d17fe40a114854a6722f512d58f505cdbde950f851b780aba2ceb364bc5b01ab8819bb3c37fe1a
7
- data.tar.gz: 99b97218aa1a33de365d6ce36f8403f774cba1e2975255253fa5147241b143009082320ffd934752a2b485a42a2d2ed9af2a06d4de0f6ebf99c38ac3ad07f5cd
6
+ metadata.gz: eaecbcaff2b29e8f05262309462fd37acdbdd3aacbd8a08f074317a4ae4dfd48a83b2a7937b5556a56ad6723d63d8a1d9a18ba121f96b47c039387330a9e1d37
7
+ data.tar.gz: c04435ea300d2e71bca62d66d4d6c30f4cfa8c6489708d93d8f66eb67b01c937c90949e506b63cd6125c6874ac34621278bc6676a8fa57383f3995f875511387
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fluent-plugin-kubernetes-metrics (1.1.8)
4
+ fluent-plugin-kubernetes-metrics (1.1.11)
5
5
  fluentd (>= 1.9.1)
6
- kubeclient (~> 4.6.0)
6
+ kubeclient (~> 4.9.3)
7
7
  multi_json (~> 1.14.1)
8
8
  oj (~> 3.10.2)
9
9
 
@@ -12,23 +12,23 @@ GEM
12
12
  specs:
13
13
  addressable (2.8.0)
14
14
  public_suffix (>= 2.0.2, < 5.0)
15
- concurrent-ruby (1.1.9)
15
+ concurrent-ruby (1.1.10)
16
16
  cool.io (1.7.1)
17
17
  crack (0.4.5)
18
18
  rexml
19
19
  docile (1.4.0)
20
20
  domain_name (0.5.20190701)
21
21
  unf (>= 0.0.5, < 1.0.0)
22
- ffi (1.15.4)
22
+ ffi (1.15.5)
23
23
  ffi-compiler (1.0.1)
24
24
  ffi (>= 1.0.0)
25
25
  rake
26
- fluentd (1.14.2)
26
+ fluentd (1.14.5)
27
27
  bundler
28
28
  cool.io (>= 1.4.5, < 2.0.0)
29
- http_parser.rb (>= 0.5.1, < 0.8.0)
29
+ http_parser.rb (>= 0.5.1, < 0.9.0)
30
30
  msgpack (>= 1.3.1, < 2.0.0)
31
- serverengine (>= 2.2.2, < 3.0.0)
31
+ serverengine (>= 2.2.5, < 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)
@@ -47,16 +47,19 @@ GEM
47
47
  http-form_data (2.3.0)
48
48
  http-parser (1.2.3)
49
49
  ffi-compiler (>= 1.0, < 2.0)
50
- http_parser.rb (0.7.0)
50
+ http_parser.rb (0.8.0)
51
51
  json (2.6.1)
52
- kubeclient (4.6.0)
52
+ jsonpath (1.1.0)
53
+ multi_json
54
+ kubeclient (4.9.3)
53
55
  http (>= 3.0, < 5.0)
54
- recursive-open-struct (~> 1.0, >= 1.0.4)
56
+ jsonpath (~> 1.0)
57
+ recursive-open-struct (~> 1.1, >= 1.1.1)
55
58
  rest-client (~> 2.0)
56
- mime-types (3.3.1)
59
+ mime-types (3.4.1)
57
60
  mime-types-data (~> 3.2015)
58
- mime-types-data (3.2021.0901)
59
- msgpack (1.4.2)
61
+ mime-types-data (3.2022.0105)
62
+ msgpack (1.4.5)
60
63
  multi_json (1.14.1)
61
64
  netrc (0.11.0)
62
65
  oj (3.10.18)
@@ -70,7 +73,7 @@ GEM
70
73
  mime-types (>= 1.16, < 4.0)
71
74
  netrc (~> 0.8)
72
75
  rexml (3.2.5)
73
- serverengine (2.2.4)
76
+ serverengine (2.2.5)
74
77
  sigdump (~> 0.2.2)
75
78
  sigdump (0.2.4)
76
79
  simplecov (0.16.1)
@@ -83,11 +86,11 @@ GEM
83
86
  power_assert
84
87
  tzinfo (2.0.4)
85
88
  concurrent-ruby (~> 1.0)
86
- tzinfo-data (1.2021.5)
89
+ tzinfo-data (1.2022.1)
87
90
  tzinfo (>= 1.0.0)
88
91
  unf (0.1.4)
89
92
  unf_ext
90
- unf_ext (0.0.8)
93
+ unf_ext (0.0.8.1)
91
94
  webmock (3.5.1)
92
95
  addressable (>= 2.3.6)
93
96
  crack (>= 0.3.2)
@@ -107,4 +110,4 @@ DEPENDENCIES
107
110
  webmock (~> 3.5.1)
108
111
 
109
112
  BUNDLED WITH
110
- 2.2.33
113
+ 2.3.10
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.8
1
+ 1.1.11
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
25
25
  spec.add_development_dependency 'test-unit', '~> 3.3.0'
26
26
  spec.add_development_dependency 'webmock', '~> 3.5.1'
27
27
  spec.add_runtime_dependency 'fluentd', '>= 1.9.1'
28
- spec.add_runtime_dependency 'kubeclient', '~> 4.6.0'
28
+ spec.add_runtime_dependency 'kubeclient', '~> 4.9.3'
29
29
  spec.add_runtime_dependency 'multi_json', '~> 1.14.1'
30
30
  spec.add_runtime_dependency 'oj', '~> 3.10.2'
31
31
  end
@@ -315,7 +315,7 @@ module Fluent
315
315
  unless metrics['time'].nil?
316
316
  time = parse_time metrics['time']
317
317
  if usage_rate = metrics['usageNanoCores']
318
- router.emit generate_tag("#{tag}.cpu.usage_rate"), time, labels.merge('value' => usage_rate / 1_000_000)
318
+ router.emit generate_tag("#{tag}.cpu.usage_rate"), time, labels.merge('value' => usage_rate / 1_000_000.0)
319
319
  end
320
320
  if usage = metrics['usageNanoCores']
321
321
  router.emit generate_tag("#{tag}.cpu.usage"), time, labels.merge('value' => usage)
@@ -416,13 +416,13 @@ module Fluent
416
416
 
417
417
  def emit_cpu_metrics_stats(tag:, metrics:, labels:, time:)
418
418
  if cpu_usage_total = metrics['usage']['total']
419
- router.emit generate_tag("#{tag}.cpu.usage.total"), time, labels.merge('value' => cpu_usage_total / 1_000_000)
419
+ router.emit generate_tag("#{tag}.cpu.usage.total"), time, labels.merge('value' => cpu_usage_total / 1_000_000.0)
420
420
  end
421
421
  if cpu_usage_user = metrics['usage']['user']
422
- router.emit generate_tag("#{tag}.cpu.usage.user"), time, labels.merge('value' => cpu_usage_user / 1_000_000)
422
+ router.emit generate_tag("#{tag}.cpu.usage.user"), time, labels.merge('value' => cpu_usage_user / 1_000_000.0)
423
423
  end
424
424
  if cpu_usage_system = metrics['usage']['system']
425
- router.emit generate_tag("#{tag}.cpu.usage.system"), time, labels.merge('value' => cpu_usage_system / 1_000_000)
425
+ router.emit generate_tag("#{tag}.cpu.usage.system"), time, labels.merge('value' => cpu_usage_system / 1_000_000.0)
426
426
  end
427
427
 
428
428
  if cpu_cfs_periods = metrics['cfs']['periods']
@@ -576,8 +576,42 @@ module Fluent
576
576
 
577
577
  unless pod['startTime'].nil?
578
578
  emit_uptime tag: tag, start_time: pod['startTime'], labels: labels
579
- emit_cpu_metrics tag: tag, metrics: pod['cpu'], labels: labels if pod['cpu'] unless pod['cpu'].nil?
580
- emit_memory_metrics tag: tag, metrics: pod['memory'], labels: labels if pod['memory'] unless pod['memory'].nil?
579
+ if pod['cpu'].nil?
580
+ if pod['containers'].nil? or Array(pod['containers']).empty?
581
+ log.warn "Summary API response has no pod cpu metrics information"
582
+ else
583
+ usageNanoCores = 0
584
+ usageCoreNanoSeconds = 0
585
+ time = nil
586
+ Array(pod['containers']).each do |container|
587
+ time = container['time'] unless container['time'].nil?
588
+ usageNanoCores += container['usageNanoCores']
589
+ usageCoreNanoSeconds += container['usageCoreNanoSeconds']
590
+ end
591
+ pod['cpu'] = { 'time' => time, 'usageNanoCores' => usageNanoCores, 'usageCoreNanoSeconds' => usageCoreNanoSeconds }
592
+ end
593
+ end
594
+ emit_cpu_metrics tag: tag, metrics: pod['cpu'], labels: labels unless pod['cpu'].nil?
595
+ if pod['memory'].nil?
596
+ if pod['containers'].nil? or Array(pod['containers']).empty?
597
+ log.warn "Summary API response has no pod memory metrics information"
598
+ else
599
+ Array(pod['containers']).each do |container|
600
+ time = nil
601
+ memory_metrics = {}
602
+ %w[availableBytes usageBytes workingSetBytes rssBytes pageFaults majorPageFaults].each do |name|
603
+ time = container['time'] unless container['time'].nil?
604
+ if value = metrics[name]
605
+ memory_metrics[name] = 0 if memory_metrics[name].nil?
606
+ memory_metrics[name] += value
607
+ end
608
+ end
609
+ end
610
+ memory_metrics['time'] = time
611
+ pod['memory'] = memory_metrics
612
+ end
613
+ end
614
+ emit_memory_metrics tag: tag, metrics: pod['memory'], labels: labels unless pod['memory'].nil?
581
615
  emit_network_metrics tag: tag, metrics: pod['network'], labels: labels unless pod['network'].nil?
582
616
  emit_fs_metrics tag: "#{tag}.ephemeral-storage", metrics: pod['ephemeral-storage'], labels: labels unless pod['ephemeral-storage'].nil?
583
617
  unless pod['volume'].nil?
@@ -595,6 +629,7 @@ module Fluent
595
629
 
596
630
  def emit_metrics(metrics)
597
631
  emit_node_metrics(metrics['node']) unless metrics['node'].nil?
632
+ log.warn "Summary API received empty pods info" if (metrics['pods'].nil? or metrics['pods'].empty?)
598
633
  Array(metrics['pods']).each &method(:emit_pod_metrics).curry.call(metrics['node']['nodeName']) unless metrics['pods'].nil?
599
634
  end
600
635
 
@@ -115,7 +115,7 @@ class KubernetesMetricsInputTest < Test::Unit::TestCase
115
115
  assert_equal @@parsed_unit_string['node']['cpu']['usageNanoCores'], @@hash_map_test['kube.node.cpu.usage'][2]['value']
116
116
 
117
117
  assert_not_nil @@hash_map_test.key?('kube.node.cpu.usage_rate')
118
- assert_equal @@parsed_unit_string['node']['cpu']['usageNanoCores'] / 1_000_000, @@hash_map_test['kube.node.cpu.usage_rate'][2]['value']
118
+ assert_equal @@parsed_unit_string['node']['cpu']['usageNanoCores'] / 1_000_000.0, @@hash_map_test['kube.node.cpu.usage_rate'][2]['value']
119
119
  end
120
120
 
121
121
  test 'test_emit_memory_metrics' do
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.8
4
+ version: 1.1.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Splunk Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-16 00:00:00.000000000 Z
11
+ date: 2022-03-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 4.6.0
103
+ version: 4.9.3
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 4.6.0
110
+ version: 4.9.3
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: multi_json
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -181,5 +181,5 @@ specification_version: 4
181
181
  summary: A fluentd input plugin that collects kubernetes cluster metrics.
182
182
  test_files:
183
183
  - test/helper.rb
184
- - test/plugin/test_missing_timestamps.rb
185
184
  - test/plugin/test_in_kubernetes_metrics.rb
185
+ - test/plugin/test_missing_timestamps.rb