deadman_check 0.3.0 → 0.3.1
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 +5 -5
- data/.travis.yml +1 -0
- data/README.md +6 -3
- data/bin/deadman-check +8 -3
- data/deadman_check.gemspec +3 -3
- data/lib/deadman_check/version.rb +1 -1
- data/lib/deadman_check_global.rb +4 -1
- data/lib/deadman_check_keyset.rb +6 -5
- data/lib/deadman_check_switch.rb +5 -4
- metadata +10 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 06a27e3e58908d95fb177ec711fbbebc034f580984a3844559b8596d0467a666
|
4
|
+
data.tar.gz: f3f0d62652404c7ebcfb2be5ad1227212236b6f7b7126e4415c9e0659b10e6d5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f70837725131659a48352a6a0978411a24493f0220ba1aa8ec11a328f956ab640bb2ad1f601b12574e87f0cfeb4938f4033e342270db11f2810ff451ee126b92
|
7
|
+
data.tar.gz: 69d404ced5622354ed654b6a3d2e514680aed661117f808dfd10322f57eb7d9c3af304639e757ad87498f2daee19e0ac0a06980dc5b591b0ca4a382a849e0f8e
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -21,8 +21,11 @@ is expected for that job.
|
|
21
21
|
* [Consul](https://www.consul.io/) instance or cluster to report to
|
22
22
|
|
23
23
|
### Alerting Options
|
24
|
-
* [Slack](https://slack.com/)
|
25
|
-
|
24
|
+
* [Slack](https://slack.com/)
|
25
|
+
<img width="752" alt="screen shot 2017-03-26 at 3 29 28 pm" src="https://cloud.githubusercontent.com/assets/538171/24335811/2e57eee8-1239-11e7-9fff-c8a10d956f2e.png">
|
26
|
+
|
27
|
+
* [AWS SNS](https://aws.amazon.com/documentation/sns/) - Broadcasting alerts and/or triggering [AWS Lambda functions](https://docs.aws.amazon.com/sns/latest/dg/sns-lambda.html) to run code
|
28
|
+
<img width="903" alt="screen shot 2017-08-04 at 11 39 12 am" src="https://user-images.githubusercontent.com/538171/28982223-e576743c-7909-11e7-8e65-ebb0b4a76762.png">
|
26
29
|
|
27
30
|
## Example Usage
|
28
31
|
|
@@ -197,7 +200,7 @@ job "DeadmanMonitoring" {
|
|
197
200
|
}
|
198
201
|
```
|
199
202
|
|
200
|
-
|
203
|
+
|
201
204
|
|
202
205
|
# Non-Nomad Use:
|
203
206
|
|
data/bin/deadman-check
CHANGED
@@ -28,11 +28,13 @@ command :switch_monitor do |c|
|
|
28
28
|
c.option '--alert-to-sns-region AWSREGION', String, 'Amazon Web Services region the SNS topic is in, defaults to us-west-2'
|
29
29
|
c.option '--daemon', 'Run as a daemon, otherwise will run check just once'
|
30
30
|
c.option '--daemon-sleep SECONDS', String, 'Set the number of seconds to sleep in between switch checks, default 300'
|
31
|
+
c.option '--consul-token TOKEN', String, 'Consul KV access token'
|
31
32
|
c.action do |args, options|
|
32
33
|
options.default :daemon_sleep => 300,
|
33
34
|
:alert_to_sns_region => 'us-west-2',
|
34
35
|
:alert_to_sns => nil,
|
35
|
-
:alert_to_slack => nil
|
36
|
+
:alert_to_slack => nil,
|
37
|
+
:consul_token => ""
|
36
38
|
|
37
39
|
if options.key_path && options.key
|
38
40
|
abort("Specify --key-path or --key, don't specify both")
|
@@ -47,7 +49,7 @@ command :switch_monitor do |c|
|
|
47
49
|
switch_monitor = DeadmanCheck::SwitchMonitor.new(
|
48
50
|
options.host, options.port,
|
49
51
|
target, options.alert_to_slack, options.alert_to_sns,
|
50
|
-
options.alert_to_sns_region, recurse, options.daemon_sleep)
|
52
|
+
options.alert_to_sns_region, recurse, options.daemon_sleep, options.consul_token)
|
51
53
|
if options.daemon
|
52
54
|
Daemons.run(switch_monitor.run_check_daemon)
|
53
55
|
else
|
@@ -66,7 +68,10 @@ command :key_set do |c|
|
|
66
68
|
c.option '--port PORT', String, 'port Consul is listening on'
|
67
69
|
c.option '--key KEY', String, 'Consul key to report EPOCH time and frequency for service'
|
68
70
|
c.option '--frequency FREQUENCY', String, 'Frequency at which this key should be updated in seconds'
|
71
|
+
c.option '--consul-token TOKEN', String, 'Consul KV access token'
|
69
72
|
c.action do |args, options|
|
73
|
+
options.default :consul_token => ""
|
74
|
+
|
70
75
|
if options.frequency.nil?
|
71
76
|
abort("Specify --frequency at which this key should be updated by the service")
|
72
77
|
end
|
@@ -74,7 +79,7 @@ command :key_set do |c|
|
|
74
79
|
abort("Must specify a --key")
|
75
80
|
end
|
76
81
|
key_set = DeadmanCheck::KeySet.new(options.host, options.port, options.key,
|
77
|
-
|
82
|
+
options.frequency, options.consul_token)
|
78
83
|
key_set.run_consul_key_update
|
79
84
|
end
|
80
85
|
end
|
data/deadman_check.gemspec
CHANGED
@@ -30,14 +30,14 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.executables = "deadman-check"
|
31
31
|
spec.require_paths = ["lib"]
|
32
32
|
|
33
|
-
spec.add_development_dependency "bundler", "~> 1
|
33
|
+
spec.add_development_dependency "bundler", "~> 2.1"
|
34
34
|
spec.add_development_dependency "rake", "~> 10.0"
|
35
35
|
spec.add_development_dependency "minitest", "~> 5.0"
|
36
36
|
spec.add_development_dependency "webmock", "~> 3.0"
|
37
37
|
|
38
38
|
spec.add_dependency 'commander', '~> 4.4', '>= 4.4.3'
|
39
|
-
spec.add_dependency 'diplomat', '~> 2.
|
39
|
+
spec.add_dependency 'diplomat', '~> 2.2.5', '>= 2.0.0'
|
40
40
|
spec.add_dependency 'slack-ruby-client', '~> 0.8.0'
|
41
41
|
spec.add_dependency 'daemons', '~> 1.2.4', '>=1.2.4'
|
42
|
-
spec.add_dependency 'aws-sdk', '~>
|
42
|
+
spec.add_dependency 'aws-sdk-sns', '~> 1'
|
43
43
|
end
|
data/lib/deadman_check_global.rb
CHANGED
@@ -9,9 +9,12 @@ module DeadmanCheck
|
|
9
9
|
return epoch_time_now
|
10
10
|
end
|
11
11
|
|
12
|
-
def configure_diplomat(host, port)
|
12
|
+
def configure_diplomat(host, port, consul_token)
|
13
13
|
Diplomat.configure do |config|
|
14
14
|
config.url = "http://#{host}:#{port}"
|
15
|
+
if consul_token != ""
|
16
|
+
config.options = {headers: {"X-Consul-Token" => consul_token}}
|
17
|
+
end
|
15
18
|
end
|
16
19
|
end
|
17
20
|
end
|
data/lib/deadman_check_keyset.rb
CHANGED
@@ -6,17 +6,18 @@ require 'json'
|
|
6
6
|
module DeadmanCheck
|
7
7
|
# KeySet Class
|
8
8
|
class KeySet
|
9
|
-
attr_accessor :host, :port, :key, :frequency
|
9
|
+
attr_accessor :host, :port, :key, :frequency, :consul_token
|
10
10
|
|
11
|
-
def initialize(host, port, key, frequency)
|
11
|
+
def initialize(host, port, key, frequency, consul_token)
|
12
12
|
@host = host
|
13
13
|
@port = port
|
14
14
|
@key = key
|
15
15
|
@frequency = frequency
|
16
|
+
@consul_token = consul_token
|
16
17
|
end
|
17
18
|
|
18
19
|
def run_consul_key_update
|
19
|
-
update_consul_key(@host, @port, @key, @frequency)
|
20
|
+
update_consul_key(@host, @port, @key, @frequency, @consul_token)
|
20
21
|
end
|
21
22
|
|
22
23
|
private
|
@@ -25,8 +26,8 @@ module DeadmanCheck
|
|
25
26
|
consul_key.to_json
|
26
27
|
end
|
27
28
|
|
28
|
-
def update_consul_key(host, port, key, frequency)
|
29
|
-
DeadmanCheck::DeadmanCheckGlobal.new.configure_diplomat(host, port)
|
29
|
+
def update_consul_key(host, port, key, frequency, consul_token)
|
30
|
+
DeadmanCheck::DeadmanCheckGlobal.new.configure_diplomat(host, port, consul_token)
|
30
31
|
epoch_time_now = DeadmanCheck::DeadmanCheckGlobal.new.get_epoch_time
|
31
32
|
Diplomat::Kv.put(key, "#{generate_json(epoch_time_now, frequency)}")
|
32
33
|
puts "Consul key #{key} updated EPOCH to #{epoch_time_now}"
|
data/lib/deadman_check_switch.rb
CHANGED
@@ -3,7 +3,7 @@ require 'deadman_check_global'
|
|
3
3
|
require 'diplomat'
|
4
4
|
require 'slack-ruby-client'
|
5
5
|
require 'json'
|
6
|
-
require 'aws-sdk'
|
6
|
+
require 'aws-sdk-sns'
|
7
7
|
|
8
8
|
module DeadmanCheck
|
9
9
|
# Switch class
|
@@ -12,7 +12,7 @@ module DeadmanCheck
|
|
12
12
|
:alert_to_sns, :alert_to_sns_region, :recurse, :daemon_sleep
|
13
13
|
|
14
14
|
def initialize(host, port, target, alert_to_slack, alert_to_sns,
|
15
|
-
alert_to_sns_region, recurse, daemon_sleep)
|
15
|
+
alert_to_sns_region, recurse, daemon_sleep, consul_token)
|
16
16
|
@host = host
|
17
17
|
@port = port
|
18
18
|
@target = target
|
@@ -21,6 +21,7 @@ module DeadmanCheck
|
|
21
21
|
@alert_to_sns_region = alert_to_sns_region
|
22
22
|
@recurse = recurse
|
23
23
|
@daemon_sleep = daemon_sleep.to_i
|
24
|
+
@consul_token = consul_token
|
24
25
|
|
25
26
|
unless @alert_to_slack.nil?
|
26
27
|
Slack.configure do |config|
|
@@ -60,7 +61,7 @@ module DeadmanCheck
|
|
60
61
|
end
|
61
62
|
|
62
63
|
def get_recorded_epochs(host, port, target, recurse)
|
63
|
-
DeadmanCheck::DeadmanCheckGlobal.new.configure_diplomat(host, port)
|
64
|
+
DeadmanCheck::DeadmanCheckGlobal.new.configure_diplomat(host, port, @consul_token)
|
64
65
|
recorded_epochs = Diplomat::Kv.get(target, recurse: recurse)
|
65
66
|
return recorded_epochs
|
66
67
|
end
|
@@ -79,7 +80,7 @@ module DeadmanCheck
|
|
79
80
|
|
80
81
|
def parse_recorded_epoch(recorded_epochs)
|
81
82
|
# {"epoch":1493000501,"frequency":"300"}
|
82
|
-
value_json = JSON.parse(recorded_epochs
|
83
|
+
value_json = JSON.parse(recorded_epochs)
|
83
84
|
frequency = value_json["frequency"]
|
84
85
|
epoch = value_json["epoch"]
|
85
86
|
return epoch, frequency
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: deadman_check
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- zane
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-02-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1
|
19
|
+
version: '2.1'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1
|
26
|
+
version: '2.1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -92,7 +92,7 @@ dependencies:
|
|
92
92
|
requirements:
|
93
93
|
- - "~>"
|
94
94
|
- !ruby/object:Gem::Version
|
95
|
-
version: 2.
|
95
|
+
version: 2.2.5
|
96
96
|
- - ">="
|
97
97
|
- !ruby/object:Gem::Version
|
98
98
|
version: 2.0.0
|
@@ -102,7 +102,7 @@ dependencies:
|
|
102
102
|
requirements:
|
103
103
|
- - "~>"
|
104
104
|
- !ruby/object:Gem::Version
|
105
|
-
version: 2.
|
105
|
+
version: 2.2.5
|
106
106
|
- - ">="
|
107
107
|
- !ruby/object:Gem::Version
|
108
108
|
version: 2.0.0
|
@@ -141,25 +141,19 @@ dependencies:
|
|
141
141
|
- !ruby/object:Gem::Version
|
142
142
|
version: 1.2.4
|
143
143
|
- !ruby/object:Gem::Dependency
|
144
|
-
name: aws-sdk
|
144
|
+
name: aws-sdk-sns
|
145
145
|
requirement: !ruby/object:Gem::Requirement
|
146
146
|
requirements:
|
147
147
|
- - "~>"
|
148
148
|
- !ruby/object:Gem::Version
|
149
|
-
version:
|
150
|
-
- - ">="
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
version: 2.10.21
|
149
|
+
version: '1'
|
153
150
|
type: :runtime
|
154
151
|
prerelease: false
|
155
152
|
version_requirements: !ruby/object:Gem::Requirement
|
156
153
|
requirements:
|
157
154
|
- - "~>"
|
158
155
|
- !ruby/object:Gem::Version
|
159
|
-
version:
|
160
|
-
- - ">="
|
161
|
-
- !ruby/object:Gem::Version
|
162
|
-
version: 2.10.21
|
156
|
+
version: '1'
|
163
157
|
description: |-
|
164
158
|
A script to check a given Consul key EPOCH for
|
165
159
|
freshness. Good for monitoring cron jobs or batch jobs. Have the last step
|
@@ -211,7 +205,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
211
205
|
version: '0'
|
212
206
|
requirements: []
|
213
207
|
rubyforge_project:
|
214
|
-
rubygems_version: 2.
|
208
|
+
rubygems_version: 2.7.7
|
215
209
|
signing_key:
|
216
210
|
specification_version: 4
|
217
211
|
summary: Monitor a Consul key that contains an EPOCH time entry. Send email if EPOCH
|