deadman_check 0.3.0 → 0.3.1

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
- 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