fluent-plugin-kubernetes-log-level 0.1.4 → 0.2.0

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: fa5fbdac4fd2fb30a485ec9778a610236ff8ca45
4
- data.tar.gz: 28eecfbe678c87ece3dc3410d26d7a6a5696f0b5
3
+ metadata.gz: a8d151fecafb83c99cc458d6033eed3434173d07
4
+ data.tar.gz: 8f3e9ac1599e8dfb0a66c40021ece373005faaff
5
5
  SHA512:
6
- metadata.gz: 07f6c6347ab0742a03841ed9fb727818b1857bf3975a930a2d5a074900a4a2ce9a1edeef7c05a81aa51711253f44f4db4e95963403e3ffe93165190bca734464
7
- data.tar.gz: 03d6fa7591ced17ecdde113a3939dfe169683d9b325710e0e54253583879366e39d0db69df6ca9e5d8ff2d1095f6fa462f2ad1647e49a4bd00a874865fbc1c04
6
+ metadata.gz: 27a4af560a7f25cde3b84b2fa9bdcab549d127232bb8f8ad05bf488e7a6b22723c4d1cb1d8998f78b1adf8732ae40c631c8513f02e488cc3f22094039df88770
7
+ data.tar.gz: 698d60e02afaa5d4bce6cf866862914c86ff438950093b425f66455310e42173390accf43f94d27e2e68bf905c70f677b5baa0663467d06230960540d6cfe48d
data/README.md CHANGED
@@ -33,7 +33,8 @@ $ bundle
33
33
  Configuration options for fluent.conf are:
34
34
 
35
35
  * `log_level_label` - kubernetes label name for setting current log level
36
- * `log_level_key` - key in log record to indicate the current record's level
36
+ * `log_level_key_label` - kubernetes label name for getting current log level from record
37
+ * `default_log_level_key` - default key in log record to indicate the current record's level
37
38
  * `default_logging_level` - default logging levels for kubernetes services missing a `log_level_label`
38
39
 
39
40
  ## Copyright
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
 
4
4
  Gem::Specification.new do |spec|
5
5
  spec.name = "fluent-plugin-kubernetes-log-level"
6
- spec.version = "0.1.4"
6
+ spec.version = "0.2.0"
7
7
  spec.authors = ["yaron-idan"]
8
8
  spec.email = ["yaronidan@gmail.com"]
9
9
 
@@ -20,28 +20,28 @@ module Fluent
20
20
  class KubernetesLogLevelFilter < Fluent::Plugin::Filter
21
21
  Fluent::Plugin.register_filter("kubernetes_log_level", self)
22
22
 
23
- # TODO - solve default values problem
24
- config_param :log_level_label, :string
25
- config_param :log_level_key, :string
26
- config_param :default_logging_level, :string
23
+ config_param :log_level_label, :string, :default => 'logging-level'
24
+ config_param :log_level_key_label, :string, :default => 'logging-level-key'
25
+ config_param :default_log_level_key, :string, :default => 'level'
26
+ config_param :default_logging_level, :string, :default => ''
27
27
 
28
28
  def configure(conf)
29
29
  super
30
30
  end
31
31
 
32
32
  def level_to_num(level)
33
- case level
34
- when 'trace', 'Verbose'
33
+ case level.downcase
34
+ when 'trace', 'verbose'
35
35
  10
36
- when 'debug', 'Debug'
36
+ when 'debug'
37
37
  20
38
- when 'info', 'Information'
38
+ when 'info', 'information'
39
39
  30
40
- when 'warning', 'Warning'
40
+ when 'warning'
41
41
  40
42
- when 'error', 'Error'
42
+ when 'error'
43
43
  50
44
- when 'fatal', 'Fatal'
44
+ when 'fatal'
45
45
  60
46
46
  else
47
47
  0
@@ -51,40 +51,45 @@ module Fluent
51
51
  def filter(tag, time, record)
52
52
 
53
53
  log.trace "Start to process record"
54
- is_logging_label_exist = false
54
+
55
+ log_level_key = @default_log_level_key
56
+ logging_level = @default_logging_level
57
+ app = 'app'
58
+
55
59
  if record.has_key?("kubernetes")
56
60
  if record["kubernetes"].has_key?("labels")
61
+ if record["kubernetes"]["labels"].has_key?('app')
62
+ app = record['kubernetes']['labels']['app']
63
+ end
64
+
65
+ if record["kubernetes"]["labels"].has_key?(@log_level_key_label)
66
+ log_level_key = record['kubernetes']['labels'][@log_level_key_label]
67
+ log.debug "[App: #{app}]: kubernetes.labels.#{@log_level_key_label} found with the value #{log_level_key}"
68
+ end
69
+
57
70
  if record["kubernetes"]["labels"].has_key?(@log_level_label)
58
- log.debug "[App: #{record['kubernetes']['labels']['app']}]: kubernetes.labels.logging-level found with the value #{record['kubernetes']['labels'][@log_level_label]}"
59
- numeric_logging_level = level_to_num(record['kubernetes']['labels'][@log_level_label])
60
- is_logging_label_exist = true
71
+ logging_level = record['kubernetes']['labels'][@log_level_label]
72
+ log.debug "[App: #{app}]: kubernetes.labels.#{@log_level_label} found with the value #{logging_level}"
61
73
  end
62
74
  end
63
75
  end
64
-
65
- log.trace "Check for logging level existence"
66
- if is_logging_label_exist == false
67
- log.debug "No logging-level label was found"
68
- if @default_logging_level.nil?
69
- record
70
- else
71
- numeric_logging_level = level_to_num(@default_logging_level)
72
- log.debug "[App: #{record['kubernetes']['labels']['app']}]: Logging level set to #{@default_logging_level}"
73
- end
74
- end
75
-
76
+
77
+ numeric_logging_level = level_to_num(logging_level)
78
+
76
79
  log.trace "Process current log level"
77
- if record.has_key?(@log_level_key.capitalize)
78
- log.debug "[App: #{record['kubernetes']['labels']['app']}]: Downcasing capitalized log_level from #{@log_level_key.capitalize}"
79
- record[@log_level_key] = record[@log_level_key.capitalize]
80
+ if record.has_key?(log_level_key.capitalize)
81
+ log.debug "[App: #{app}]: Downcasing capitalized log_level from #{log_level_key.capitalize}"
82
+ current_log_level = record[log_level_key.capitalize]
83
+ else
84
+ current_log_level = record[log_level_key]
80
85
  end
81
86
 
82
- numeric_level = level_to_num(record[@log_level_key])
87
+ numeric_level = level_to_num(current_log_level)
83
88
  if numeric_level >= numeric_logging_level
84
- log.debug "[App: #{record['kubernetes']['labels']['app']}]: Emitting record with #{record[@log_level_key]} level"
89
+ log.debug "[App: #{app}]: Emitting record with #{current_log_level} level"
85
90
  record
86
91
  else
87
- log.debug "[App: #{record['kubernetes']['labels']['app']}]: Dropping record with #{record[@log_level_key]} level"
92
+ log.debug "[App: #{app}]: Dropping record with #{current_log_level} level"
88
93
  nil
89
94
  end
90
95
  end
@@ -38,7 +38,6 @@ class KubernetesLogLevelFilterTest < Test::Unit::TestCase
38
38
 
39
39
  @expected_static_capital_level = [{
40
40
  'Level' => 'Warning',
41
- 'level' => 'Warning',
42
41
  'kubernetes' => {
43
42
  'labels' => {
44
43
  'app' => 'demo'
@@ -55,11 +54,28 @@ class KubernetesLogLevelFilterTest < Test::Unit::TestCase
55
54
  }
56
55
  }
57
56
  }]
57
+
58
+ @expected_no_default_log_level = [{
59
+ 'level' => 'error',
60
+ 'kubernetes' => {
61
+ 'labels' => {
62
+ 'app' => 'demo'
63
+ }
64
+ }
65
+ }]
66
+
67
+ @expected_log_level_key = [{
68
+ 'levelname' => 'error',
69
+ 'kubernetes' => {
70
+ 'labels' => {
71
+ 'logging-level-key' => 'levelname',
72
+ 'app' => 'demo'
73
+ }
74
+ }
75
+ }]
58
76
  end
59
77
 
60
78
  CONFIG = %[
61
- log_level_label logging-level
62
- log_level_key level
63
79
  default_logging_level warning
64
80
  ]
65
81
 
@@ -69,16 +85,24 @@ class KubernetesLogLevelFilterTest < Test::Unit::TestCase
69
85
  Fluent::Test::Driver::Filter.new(Fluent::Plugin::KubernetesLogLevelFilter).configure(conf)
70
86
  end
71
87
 
72
- def filter(msg, time = event_time("2017-07-12 19:20:21 UTC"))
73
- d = create_driver
88
+ def filter(msg, conf = CONFIG, time = event_time("2017-07-12 19:20:21 UTC"))
89
+ d = create_driver(conf)
74
90
  d.run { d.feed('kubernetes', time, msg) }
75
91
  d.filtered_records
76
92
  end
77
93
 
78
94
  def test_default_configuration
79
- d = create_driver
95
+ conf = %[
96
+ log_level_label logging-level
97
+ log_level_key_label logging-level-key
98
+ default_log_level_key level
99
+ default_logging_level warning
100
+ ]
101
+
102
+ d = create_driver(conf)
80
103
  assert_equal 'logging-level', d.instance.config['log_level_label']
81
- assert_equal 'level', d.instance.config['log_level_key']
104
+ assert_equal 'logging-level-key', d.instance.config['log_level_key_label']
105
+ assert_equal 'level', d.instance.config['default_log_level_key']
82
106
  assert_equal 'warning', d.instance.config['default_logging_level']
83
107
  end
84
108
 
@@ -101,4 +125,13 @@ class KubernetesLogLevelFilterTest < Test::Unit::TestCase
101
125
  def test_serilog_structure
102
126
  assert_equal @expected_static_capital_level, filter({"Level"=>"Warning", "kubernetes"=>{"labels"=>{"app"=>"demo"}}})
103
127
  end
128
+
129
+ def test_no_default_log_level
130
+ conf = %[]
131
+ assert_equal @expected_no_default_log_level, filter({"level"=>"error", "kubernetes"=>{"labels"=>{"app"=>"demo"}}}, conf)
132
+ end
133
+
134
+ def test_custom_log_level
135
+ assert_equal @expected_log_level_key, filter({"levelname"=>"error", "kubernetes"=>{"labels"=>{"logging-level-key"=>"levelname","app"=>"demo"}}})
136
+ end
104
137
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-kubernetes-log-level
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - yaron-idan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-20 00:00:00.000000000 Z
11
+ date: 2018-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler