sensu-plugins-edgelab 1.3.1 → 1.4.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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/bin/check-nomad-jobs.rb +39 -1
  3. metadata +5 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4a8a2860bfd4180b4d7a0199449c484799418376
4
- data.tar.gz: 110365a9d4347b06e9bf626fb8d65993bf1bd27a
3
+ metadata.gz: aa20291918973ec9b435b65626dec763c7b36be2
4
+ data.tar.gz: 27fc4397fb9b6454d504239f469abe596a465806
5
5
  SHA512:
6
- metadata.gz: 3385985143bdc67ebc208d152727852ffbb71ad96a90146b69a26fea321b695aa6035691c5f9e9113a9fc6331f4bc4c283ebd5fcbe98851244cb2c4fad1b8e4d
7
- data.tar.gz: d11e760ad23c4ff5e013f1d3bc5083cce74640c509aa57a9e88ccf871f270314a9f515af235287a11b4100403143896bb926d48ea93c1d3c847314a9666a409e
6
+ metadata.gz: 2c3b8052c10cd420be8c30891cd453ef1bac9997c2b5d2c319f6573919f8ad469351d58065b695a6e61253db99fbc0714604f2f1c39fced570d21d11edb15147
7
+ data.tar.gz: 3b18f436aa32a778743c465ae63fa3fe55019a1a7fbc5fa08808e078b53e02c0efbb82a72e8e0443a1e3281ca3d0fd681342ba67b22707996dc3ecf2918b8e98
@@ -17,11 +17,22 @@ class CheckNomadAllocations < Sensu::Plugin::Check::CLI
17
17
  description: 'Nomad server URL',
18
18
  long: '--nomad SERVER',
19
19
  default: 'http://localhost:4646'
20
+
20
21
  option :alloc_starting_time,
21
22
  description: '',
22
- long: '--alloc-starting-time',
23
+ long: '--alloc-starting-time SECONDS',
23
24
  default: 300
24
25
 
26
+ option :alloc_restarts_count,
27
+ description: 'Limit number of restarts in restarts interval',
28
+ long: '--alloc-restarts-count COUNT',
29
+ default: 3
30
+
31
+ option :alloc_restarts_interval,
32
+ description: 'Interval in seconds for the limit number of restarts',
33
+ long: '--alloc-restarts-interval SECONDS',
34
+ default: 3600
35
+
25
36
  # Call Nomad api and parse the JSON response
26
37
  def api_call(endpoint)
27
38
  url = config[:nomad] + endpoint
@@ -125,6 +136,32 @@ class CheckNomadAllocations < Sensu::Plugin::Check::CLI
125
136
  end
126
137
  end
127
138
 
139
+ # Check that running allocations are not restarting endlessly.
140
+ def check_restarts(job, failed)
141
+ allocations = api_call "/v1/job/#{job['ID']}/allocations"
142
+ now = Time.new.to_i
143
+
144
+ allocations.each do |alloc|
145
+ if %w(running pending).include? alloc['ClientStatus']
146
+ alloc['TaskStates'].each do |_, state|
147
+ restarts = 0
148
+ state['Events'].each do |event|
149
+ if event['Type'] == 'Restarting'
150
+ event_time = event['Time'] / 1_000_000_000
151
+ if (now - event_time) < config[:alloc_restarts_interval].to_i
152
+ restarts += 1
153
+ end
154
+ end
155
+ end
156
+
157
+ if restarts >= config[:alloc_restarts_count].to_i
158
+ failed << "Alloc #{alloc['Name']} restart #{restarts} times"
159
+ end
160
+ end
161
+ end
162
+ end
163
+ end
164
+
128
165
  def run
129
166
  jobs = api_call '/v1/jobs'
130
167
  if jobs.empty?
@@ -136,6 +173,7 @@ class CheckNomadAllocations < Sensu::Plugin::Check::CLI
136
173
  jobs.each do |job|
137
174
  check_evaluations job, failed
138
175
  check_allocations job, failed
176
+ check_restarts job, failed
139
177
  end
140
178
 
141
179
  if failed.any?
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-edgelab
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Edgelab
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-09 00:00:00.000000000 Z
11
+ date: 2017-02-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sensu-plugin
@@ -111,12 +111,12 @@ dependencies:
111
111
  description: Sensu plugins developed by Edgelab
112
112
  email:
113
113
  executables:
114
- - check-nomad-leader.rb
114
+ - check-swarm-cluster.rb
115
+ - metrics-mysql-processes.rb
115
116
  - metrics-swarm-cluster.rb
116
117
  - check-apt-expired-keys.rb
117
118
  - check-nomad-jobs.rb
118
- - check-swarm-cluster.rb
119
- - metrics-mysql-processes.rb
119
+ - check-nomad-leader.rb
120
120
  extensions: []
121
121
  extra_rdoc_files: []
122
122
  files: