kubernetes_health_checker 0.0.0.12 → 0.0.0.17

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: 1a000f6a14013e5885598ed48149fe1bca3dffcc93c0ddfd4edced63e9e1832c
4
- data.tar.gz: b9e73f4f139d443536cdcd669a1efb11cd919b27b3a4be70e5429e15d32e18b3
3
+ metadata.gz: fdfdca84d108f5bb2f4ee6912fcf166c720bca238b7f51218419055c58e1b3c6
4
+ data.tar.gz: b5da5ff0da0ac21def85f1ed37ab81cfa125982155d8af46b723648b810fb72a
5
5
  SHA512:
6
- metadata.gz: 5465ed23f2d56f4a7d3782626133ee5ad2980588de22a9f5d35430038737ed25c9d49dd0d2d89847a2fc11e4b605c16c3f5261820a457df2978adb1b6ff10f77
7
- data.tar.gz: d2f77fc7c07b422d8b29dfd708b23c6f51f6a4c9d0e8ce9850ee884aa9b86c947aebe24e7ec3c2b9d2790cb5f7abb7af6628c44a0a7951ff397c115a1e4ca5b3
6
+ metadata.gz: e079e08b3927bea6917777a17531182e2afa21edd28f9acb1d9adc4360d28195ba96a1f4d2ac4926dcbf692c037ac2e261cc22020c1cdb713a3600ccd79c1b8f
7
+ data.tar.gz: d707a0f60b6ecca4df52a61871895744a0eca423ea0c825b16c48da243a5c1f5765f2803249c2a1301cd87f580d2aa8314ece373b8c6ef085a38359c04c3cdfc
@@ -15,15 +15,19 @@ module KubernetesHealthChecker
15
15
  method_option :url, aliases: '-u', type: :string, desc: 'Specify the slack url you would like the alert POSTed to'
16
16
  method_option :test, aliases: '-t', type: :boolean, desc: 'Specify if running the gem in test mode'
17
17
 
18
- ALERT_STATUSES = ['crashloopbackoff'].freeze
18
+ ALERT_STATUSES = %w[crashloopbackoff
19
+ error
20
+ runcontainererror
21
+ createcontainerconfigerror].freeze
19
22
 
20
23
  # time is in seconds
21
24
  TIMED_ALERT_STATUSES = {
22
- 'pending' => 30,
23
- 'containercreating' => 30,
24
- }
25
+ 'pending' => 120,
26
+ 'errimagepull' => 120,
27
+ 'containercreating' => 120
28
+ }.freeze
25
29
 
26
- RUN_INTERVAL = 120
30
+ RUN_INTERVAL = 10
27
31
 
28
32
  def start
29
33
  set_defaults(options)
@@ -40,15 +44,15 @@ module KubernetesHealthChecker
40
44
 
41
45
  desc 'version', 'Prints version'
42
46
  def version
43
- say "KubernetesHealthChecker 0.0.0"
47
+ say 'KubernetesHealthChecker 0.0.0'
44
48
  end
45
49
 
46
50
  no_commands do
47
51
  def set_defaults(options)
48
- opts = options.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
52
+ opts = options.inject({}) { |memo, (k, v)| memo[k.to_sym] = v; memo }
49
53
  @alert_threshold = opts[:alert_threshold] || 5
50
54
  @slack_channel = opts[:channel] || '@rohan'
51
- @namespace = opts[:namespace].split(',') || ['default']
55
+ @namespace = opts[:namespace]&.split(',') || ['default']
52
56
  @test = opts[:test] || false
53
57
  @url = opts[:url]
54
58
  @pods_data = {}
@@ -83,7 +87,7 @@ module KubernetesHealthChecker
83
87
  channel: @slack_channel,
84
88
  username: 'kubernetes_health_check_bot',
85
89
  text: message,
86
- icon_emoji: ":face_with_thermometer:"
90
+ icon_emoji: ':face_with_thermometer:'
87
91
  }
88
92
 
89
93
  `curl -X POST --data-urlencode 'payload=#{JSON.generate(payload)}' #{@url}`
@@ -92,7 +96,7 @@ module KubernetesHealthChecker
92
96
  def get_pod_message(pod_name:, new_status:, new_restarts:, age:)
93
97
  old_restarts = @pods_data[pod_name][:restarts]
94
98
  old_status = @pods_data[pod_name][:status]
95
- text = ""
99
+ text = ''
96
100
 
97
101
  if !@pods_data[pod_name].empty? && old_restarts == new_restarts && old_status == new_status
98
102
  # we've already alerted from this state, skip
@@ -101,7 +105,7 @@ module KubernetesHealthChecker
101
105
  elsif TIMED_ALERT_STATUSES.keys.include?(new_status.downcase)
102
106
  alert_threshold = TIMED_ALERT_STATUSES[new_status.downcase]
103
107
  if age > alert_threshold
104
- text = "Pod #{pod_name} has been in status: *#{new_status}* for #{age} seconds :grimacing:."
108
+ text = "Pod #{pod_name} has been in status: *#{new_status}* for #{age} seconds :grimacing:.\n"
105
109
  end
106
110
  elsif new_restarts > @alert_threshold
107
111
  text = "Pod *#{pod_name}* has restarted *#{new_restarts}* times and has status: *#{new_status}*.\n"
@@ -112,20 +116,22 @@ module KubernetesHealthChecker
112
116
 
113
117
  def construct_message(output)
114
118
  message = ''
115
- new_pod_store = {}
116
119
 
117
120
  rows = output.split("\n")
118
121
  rows.each_with_index do |row, index|
119
122
  next if index == 0
120
123
 
121
- row = row.split(" ")
124
+ row = row.split(' ')
122
125
  pod_name = row[0]
123
126
  status = row[2]
124
127
  restarts = row[3].to_i
125
128
  age = get_age_in_seconds(row[4])
126
129
 
127
130
  @pods_data[pod_name] ||= {}
128
- message += get_pod_message(pod_name: pod_name, new_status: status, new_restarts: restarts, age: age)
131
+ message += get_pod_message(pod_name: pod_name,
132
+ new_status: status,
133
+ new_restarts: restarts,
134
+ age: age)
129
135
 
130
136
  # update our data store for the pods
131
137
  @pods_data[pod_name][:status] = status
@@ -156,4 +162,4 @@ module KubernetesHealthChecker
156
162
  end
157
163
  end
158
164
 
159
- KubernetesHealthChecker::Runner.start
165
+ KubernetesHealthChecker::Runner.start
@@ -2,5 +2,5 @@
2
2
 
3
3
  require 'daemons'
4
4
 
5
- filename = "#{File.expand_path(File.dirname(__FILE__))}/kubernetes_health_checker"
6
- Daemons.run(filename)
5
+ filename = "#{__dir__}/kubernetes_health_checker"
6
+ Daemons.run(filename)
data/bin/mock_output.txt CHANGED
@@ -6,7 +6,7 @@ affinity-external-api-dep-1624144290-zqsfb 0/2 Evicted 0
6
6
  affinity-external-api-dep-3283253972-ttgft 2/2 Running 0 1d
7
7
  automate-affinity-pipeline-rc-l6zb0 1/1 Running 0 1d
8
8
  compute-relationship-strengths-rc-x8mv1 1/1 Running 0 1d
9
- convert-html-to-text-consumer-rc-lx0s5 1/1 Running 0 1d
9
+ convert-html-to-text-consumer-rc-lx0s5 1/1 Pending 0 1d
10
10
  create-contacts-consumer-rc-h5hj7 1/1 Running 0 1d
11
11
  create-deal-emails-consumer-rc-qd7n4 1/1 Running 10 22h
12
12
  create-smart-alert-notifications-rc-d87p2 1/1 Running 0 1d
@@ -19,8 +19,8 @@ ditto2-rc-ffj0s 1/1 Running 3
19
19
  ditto3-rc-ntdz9 1/1 Running 1 22h
20
20
  dump-new-persons-for-labeling-rc-p043f 1/1 Running 0 1d
21
21
  extract-introductions-consumer-rc-32d29 1/1 Running 1 1d
22
- extract-signatures-consumer-rc-4n0wl 1/1 Running 0 1d
23
- fetch-public-metadata-rc-g94b0 1/1 Running 0 1d
22
+ extract-signatures-consumer-rc-4n0wl 1/1 ErrImagePull 0 60s
23
+ fetch-public-metadata-rc-g94b0 1/1 ErrImagePull 0 130s
24
24
  health-check-rc-wkh2t 1/1 Running 0 22h
25
25
  helper-rc-17pmz 1/1 Running 0 22h
26
26
  import-companies-rc-grkkm 1/1 Running 0 1d
@@ -104,4 +104,4 @@ weave-net-h29cn 2/2 R
104
104
  weave-net-mqjcw 2/2 Running 4 68d
105
105
  weave-net-r85qh 2/2 Running 0 2h
106
106
  weave-net-wgsml 2/2 Running 12 68d
107
- weave-net-zdz7j 2/2 Running 4 19d
107
+ weave-net-zdz7j 2/2 Running 4 19d
@@ -54,7 +54,7 @@ send-inactive-user-emails-rc-92pf0 1/1 CrashLoopBackO
54
54
  send-weekly-summary-email-rc-vmr8s 1/1 Running 0 1d
55
55
  shoryuken-ews-syncer-rc-rr512 1/1 Running 1 1d
56
56
  shoryuken-ews-syncer-rc-wq76w 1/1 Running 1 1d
57
- shoryuken-insert-emails-rc-65ct6 1/1 Running 2 1d
57
+ shoryuken-insert-emails-rc-65ct6 1/1 Pending 2 1d
58
58
  sidekiq-rc-kz4tc 1/1 Running 0 1d
59
59
  sidekiq-rc-wl7pm 1/1 Running 0 1d
60
60
  sidekiq-web-dep-1155096845-kfs0h 2/2 Running 0 1d
@@ -67,4 +67,4 @@ update-dropped-email-alerts-consumer-rc-n3069 1/1 Running 1
67
67
  update-email-count-rc-s29lk 1/1 Running 0 1d
68
68
  update-primary-emails-rc-6sd8b 1/1 Running 0 1d
69
69
  update-sources-consumer-rc-zrf2f 1/1 Running 0 22h
70
- vacuum-analyze-db-rc-jr14r 1/1 Running 0 1d
70
+ vacuum-analyze-db-rc-jr14r 1/1 Running 0 1d
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kubernetes_health_checker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0.12
4
+ version: 0.0.0.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rohan Sahai
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-10 00:00:00.000000000 Z
11
+ date: 2021-03-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: thor
14
+ name: daemons
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
@@ -25,7 +25,7 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: daemons
28
+ name: thor
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
@@ -65,11 +65,11 @@ files:
65
65
  - bin/kubernetes_health_checkerd
66
66
  - bin/mock_output.txt
67
67
  - bin/mock_output_two.txt
68
- homepage: http://rubygems.org/gems/kubernetes_health_checker
68
+ homepage: https://rubygems.org/gems/kubernetes_health_checker
69
69
  licenses:
70
70
  - MIT
71
71
  metadata: {}
72
- post_install_message:
72
+ post_install_message:
73
73
  rdoc_options: []
74
74
  require_paths:
75
75
  - lib
@@ -77,16 +77,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
77
77
  requirements:
78
78
  - - ">="
79
79
  - !ruby/object:Gem::Version
80
- version: '0'
80
+ version: '2.4'
81
81
  required_rubygems_version: !ruby/object:Gem::Requirement
82
82
  requirements:
83
83
  - - ">="
84
84
  - !ruby/object:Gem::Version
85
85
  version: '0'
86
86
  requirements: []
87
- rubyforge_project:
88
- rubygems_version: 2.7.7
89
- signing_key:
87
+ rubygems_version: 3.2.3
88
+ signing_key:
90
89
  specification_version: 4
91
90
  summary: Get notifications for unhealthy kubernetes pods
92
91
  test_files: []