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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 59091e4397024d50031cf4368adfea22a4057207
4
- data.tar.gz: dcc1a25d10b623e2b4e13c928ba19cbef1ccc1e9
2
+ SHA256:
3
+ metadata.gz: 06a27e3e58908d95fb177ec711fbbebc034f580984a3844559b8596d0467a666
4
+ data.tar.gz: f3f0d62652404c7ebcfb2be5ad1227212236b6f7b7126e4415c9e0659b10e6d5
5
5
  SHA512:
6
- metadata.gz: 394b714ccbb820e3fc3e526baadc3bb75ef51309ba3a08cd058548cbe8c6b4fe5da7219182023a523d9db19438319a42f30ff7e39d92098bf93bbe8f1c9f1ae0
7
- data.tar.gz: bfc91fcadb9bb51475fd7382516dc687adce7d3c5917e5fa8b6bb26989432301e17ae9d06ee7fed3e74332a6eaa0ca1a6d6b984e6371a2439dd480c861f66e2b
6
+ metadata.gz: f70837725131659a48352a6a0978411a24493f0220ba1aa8ec11a328f956ab640bb2ad1f601b12574e87f0cfeb4938f4033e342270db11f2810ff451ee126b92
7
+ data.tar.gz: 69d404ced5622354ed654b6a3d2e514680aed661117f808dfd10322f57eb7d9c3af304639e757ad87498f2daee19e0ac0a06980dc5b591b0ca4a382a849e0f8e
@@ -2,6 +2,7 @@ sudo: required
2
2
  language: ruby
3
3
  rvm:
4
4
  - 2.4.0
5
+ - 2.7.0
5
6
  install:
6
7
  - gem install bundler
7
8
  - bundle install
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
- * [AWS SNS](https://aws.amazon.com/documentation/sns/)
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
- <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">
203
+
201
204
 
202
205
  # Non-Nomad Use:
203
206
 
@@ -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
- options.frequency)
82
+ options.frequency, options.consul_token)
78
83
  key_set.run_consul_key_update
79
84
  end
80
85
  end
@@ -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.13"
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.0.0', '>= 2.0.0'
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', '~> 2.10.21', '>=2.10.21'
42
+ spec.add_dependency 'aws-sdk-sns', '~> 1'
43
43
  end
@@ -1,3 +1,3 @@
1
1
  module DeadmanCheck
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.1"
3
3
  end
@@ -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
@@ -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}"
@@ -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[0][:value])
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.0
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: 2017-08-04 00:00:00.000000000 Z
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.13'
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.13'
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.0.0
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.0.0
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: 2.10.21
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: 2.10.21
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.6.11
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