sensu-plugins-consul-magec 2.2.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 +7 -0
- data/CHANGELOG.md +161 -0
- data/LICENSE +22 -0
- data/README.md +29 -0
- data/bin/check-consul-failures.rb +103 -0
- data/bin/check-consul-kv-ttl.rb +176 -0
- data/bin/check-consul-leader.rb +129 -0
- data/bin/check-consul-maintenance.rb +98 -0
- data/bin/check-consul-members.rb +136 -0
- data/bin/check-consul-quorum.rb +91 -0
- data/bin/check-consul-servers.rb +118 -0
- data/bin/check-consul-service-health.rb +161 -0
- data/bin/check-consul-stale-peers.rb +73 -0
- data/bin/check-service-consul.rb +160 -0
- data/lib/sensu-plugins-consul.rb +3 -0
- data/lib/sensu-plugins-consul/check/base.rb +112 -0
- data/lib/sensu-plugins-consul/version.rb +11 -0
- metadata +246 -0
@@ -0,0 +1,112 @@
|
|
1
|
+
# frozen_string_literal: false
|
2
|
+
|
3
|
+
#
|
4
|
+
# sensu-plugins-consul/check/base
|
5
|
+
#
|
6
|
+
# DESCRIPTION:
|
7
|
+
# This class defines some of the common config options and helper methods for
|
8
|
+
# other Consul plugins to use.
|
9
|
+
#
|
10
|
+
# OUTPUT:
|
11
|
+
# N/A
|
12
|
+
#
|
13
|
+
# PLATFORMS:
|
14
|
+
# Linux
|
15
|
+
#
|
16
|
+
# DEPENDENCIES:
|
17
|
+
# gem: sensu-plugin
|
18
|
+
# gem: rest-client
|
19
|
+
#
|
20
|
+
# USAGE:
|
21
|
+
# Import this file and create subclasses of the included plugin class.
|
22
|
+
# require 'sensu-plugins-consul/check/base'
|
23
|
+
# class ConsulTestStatus < SensuPluginsConsul::Check::Base
|
24
|
+
# ...
|
25
|
+
#
|
26
|
+
# NOTES:
|
27
|
+
#
|
28
|
+
# LICENSE:
|
29
|
+
# Copyright 2018, Jonathan Hartman <j@hartman.io>
|
30
|
+
# Released under the same terms as Sensu (the MIT license); see LICENSE
|
31
|
+
# for details.
|
32
|
+
#
|
33
|
+
|
34
|
+
require 'json'
|
35
|
+
require 'rest-client'
|
36
|
+
require 'sensu-plugin/check/cli'
|
37
|
+
|
38
|
+
#
|
39
|
+
# Consul shared base plugin
|
40
|
+
#
|
41
|
+
module SensuPluginsConsul
|
42
|
+
class Check
|
43
|
+
class Base < Sensu::Plugin::Check::CLI
|
44
|
+
option :server,
|
45
|
+
description: 'Consul server',
|
46
|
+
short: '-s SERVER',
|
47
|
+
long: '--server SERVER',
|
48
|
+
default: '127.0.0.1'
|
49
|
+
|
50
|
+
option :port,
|
51
|
+
description: 'Consul HTTP port',
|
52
|
+
short: '-p PORT',
|
53
|
+
long: '--port PORT',
|
54
|
+
proc: proc(&:to_i),
|
55
|
+
default: 8500
|
56
|
+
|
57
|
+
option :protocol,
|
58
|
+
description: 'Consul listener protocol',
|
59
|
+
short: '-P PROTOCOL',
|
60
|
+
long: '--protocol PROTOCOL',
|
61
|
+
in: %w[http https],
|
62
|
+
default: 'http'
|
63
|
+
|
64
|
+
option :insecure,
|
65
|
+
description: 'Set this flag to disable SSL verification',
|
66
|
+
short: '-k',
|
67
|
+
long: '--insecure',
|
68
|
+
boolean: true,
|
69
|
+
default: false
|
70
|
+
|
71
|
+
option :capath,
|
72
|
+
description: 'Absolute path to an alternative CA file',
|
73
|
+
short: '-c CAPATH',
|
74
|
+
long: '--capath CAPATH'
|
75
|
+
|
76
|
+
option :timeout,
|
77
|
+
description: 'Connection will time out after this many seconds',
|
78
|
+
short: '-t TIMEOUT_IN_SECONDS',
|
79
|
+
long: '--timeout TIMEOUT_IN_SECONDS',
|
80
|
+
proc: proc(&:to_i),
|
81
|
+
default: 5
|
82
|
+
|
83
|
+
option :token,
|
84
|
+
description: 'ACL token',
|
85
|
+
long: '--token ACL_TOKEN'
|
86
|
+
|
87
|
+
#
|
88
|
+
# Fetch and return the parsed JSON data from a specified Consul API endpoint.
|
89
|
+
#
|
90
|
+
def consul_get(endpoint)
|
91
|
+
url = "#{config[:protocol]}://#{config[:server]}:#{config[:port]}/" \
|
92
|
+
"v1/#{endpoint}"
|
93
|
+
options = { timeout: config[:timeout],
|
94
|
+
verify_ssl: !config[:insecure],
|
95
|
+
ssl_ca_file: config[:capath],
|
96
|
+
headers: { 'X-Consul-Token' => config[:token] } }
|
97
|
+
|
98
|
+
JSON.parse(RestClient::Resource.new(url, options).get)
|
99
|
+
rescue Errno::ECONNREFUSED
|
100
|
+
critical 'Consul is not responding'
|
101
|
+
rescue RestClient::RequestTimeout
|
102
|
+
critical 'Consul connection timed out'
|
103
|
+
rescue RestClient::Exception => e
|
104
|
+
if e.message.include?('403')
|
105
|
+
critical 'ACL token is not authorized to access resource'
|
106
|
+
else
|
107
|
+
unknown "Consul returned: #{e}"
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
metadata
ADDED
@@ -0,0 +1,246 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sensu-plugins-consul-magec
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2.2.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Sensu Plugins and contributors
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-11-15 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: sensu-plugin
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.2'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.2'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: diplomat
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 2.0.2
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 2.0.2
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rest-client
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.8.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.8.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: bundler
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.7'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.7'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: codeclimate-test-reporter
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0.4'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.4'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: github-markup
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.3'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '1.3'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: pry
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0.10'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0.10'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rake
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '10.5'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '10.5'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: redcarpet
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '3.2'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '3.2'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: rspec
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '3.4'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '3.4'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: rubocop
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: 0.51.0
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: 0.51.0
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: yard
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - "~>"
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: 0.9.11
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - "~>"
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: 0.9.11
|
181
|
+
description: |-
|
182
|
+
This plugin provides native instrumentation for monitoring Consul, including:
|
183
|
+
Consul server service and cluster health, and querying the Consul API to check
|
184
|
+
for passing/critical services.
|
185
|
+
email: "<sensu-users@googlegroups.com>"
|
186
|
+
executables:
|
187
|
+
- check-consul-leader.rb
|
188
|
+
- check-consul-quorum.rb
|
189
|
+
- check-consul-kv-ttl.rb
|
190
|
+
- check-service-consul.rb
|
191
|
+
- check-consul-service-health.rb
|
192
|
+
- check-consul-servers.rb
|
193
|
+
- check-consul-stale-peers.rb
|
194
|
+
- check-consul-maintenance.rb
|
195
|
+
- check-consul-members.rb
|
196
|
+
- check-consul-failures.rb
|
197
|
+
extensions: []
|
198
|
+
extra_rdoc_files: []
|
199
|
+
files:
|
200
|
+
- CHANGELOG.md
|
201
|
+
- LICENSE
|
202
|
+
- README.md
|
203
|
+
- bin/check-consul-failures.rb
|
204
|
+
- bin/check-consul-kv-ttl.rb
|
205
|
+
- bin/check-consul-leader.rb
|
206
|
+
- bin/check-consul-maintenance.rb
|
207
|
+
- bin/check-consul-members.rb
|
208
|
+
- bin/check-consul-quorum.rb
|
209
|
+
- bin/check-consul-servers.rb
|
210
|
+
- bin/check-consul-service-health.rb
|
211
|
+
- bin/check-consul-stale-peers.rb
|
212
|
+
- bin/check-service-consul.rb
|
213
|
+
- lib/sensu-plugins-consul.rb
|
214
|
+
- lib/sensu-plugins-consul/check/base.rb
|
215
|
+
- lib/sensu-plugins-consul/version.rb
|
216
|
+
homepage: https://github.com/sensu-plugins/sensu-plugins-consul
|
217
|
+
licenses:
|
218
|
+
- MIT
|
219
|
+
metadata:
|
220
|
+
maintainer: sensu-plugin
|
221
|
+
development_status: active
|
222
|
+
production_status: unstable - testing recommended
|
223
|
+
release_draft: 'false'
|
224
|
+
release_prerelease: 'false'
|
225
|
+
post_install_message: You can use the embedded Ruby by setting EMBEDDED_RUBY=true
|
226
|
+
in /etc/default/sensu
|
227
|
+
rdoc_options: []
|
228
|
+
require_paths:
|
229
|
+
- lib
|
230
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
231
|
+
requirements:
|
232
|
+
- - ">="
|
233
|
+
- !ruby/object:Gem::Version
|
234
|
+
version: '2.1'
|
235
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
236
|
+
requirements:
|
237
|
+
- - ">="
|
238
|
+
- !ruby/object:Gem::Version
|
239
|
+
version: '0'
|
240
|
+
requirements: []
|
241
|
+
rubyforge_project:
|
242
|
+
rubygems_version: 2.6.11
|
243
|
+
signing_key:
|
244
|
+
specification_version: 4
|
245
|
+
summary: Sensu plugins for Consul
|
246
|
+
test_files: []
|