sumo-check-redis-integer 0.0.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/bin/sumo-check-redis-integer-value.rb +76 -0
- data/lib/redis_client_options.rb +93 -0
- metadata +276 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 6979b8464cade5dca85b6fd2a128454535f96acf
|
4
|
+
data.tar.gz: 2d798726c79dde3e7a6abd61080985443c5a5593
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a937ea5592d2ec2e9164c491692bb398460f1deccc290f47dfb38a0a494a88212b04e4a07f09640ec4864bb3331961f938c29732089ced5c6247e1a54ef2010b
|
7
|
+
data.tar.gz: a7f4645ef94b5f144680ad5ce30ea4c771fd13a07a1c6bcd0824a33015ea123c65863bad086dc6c712faf59741d9ce64d00dae5a92ca4eec0449e2cdcf8ce007
|
@@ -0,0 +1,76 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Checks checks variables from redis INFO http://redis.io/commands/INFO
|
4
|
+
#
|
5
|
+
# ===
|
6
|
+
#
|
7
|
+
# Depends on redis gem
|
8
|
+
# gem install redis
|
9
|
+
#
|
10
|
+
# ===
|
11
|
+
#
|
12
|
+
# Released under the same terms as Sensu (the MIT license); see LICENSE
|
13
|
+
# for details.
|
14
|
+
#
|
15
|
+
# Heavily inspired in check-redis-slave-status.rb
|
16
|
+
# https://github.com/sensu/sensu-community-plugins/blob/master/plugins/redis/check-redis-slave-status.rb
|
17
|
+
#
|
18
|
+
|
19
|
+
require 'sensu-plugin/check/cli'
|
20
|
+
require 'redis'
|
21
|
+
require_relative '../lib/redis_client_options'
|
22
|
+
|
23
|
+
class SumoCheckRedisIntValue < Sensu::Plugin::Check::CLI
|
24
|
+
include RedisClientOptions
|
25
|
+
|
26
|
+
option :redis_key,
|
27
|
+
short: '-K VALUE',
|
28
|
+
long: '--redis-key KEY',
|
29
|
+
description: 'Redis info key to monitor',
|
30
|
+
required: false,
|
31
|
+
default: 'role'
|
32
|
+
|
33
|
+
option :redis_compare_value,
|
34
|
+
short: '-V VALUE',
|
35
|
+
long: '--redis-key-value VALUE',
|
36
|
+
description: 'Redis info key value to trigger alarm',
|
37
|
+
required: false,
|
38
|
+
default: 'master'
|
39
|
+
|
40
|
+
option :comparator,
|
41
|
+
short: '-C eq',
|
42
|
+
long: '--comparator eq',
|
43
|
+
description: 'Operation to compare value (equal eq, greater gt, less lt)',
|
44
|
+
required: true,
|
45
|
+
default: 'eq'
|
46
|
+
|
47
|
+
|
48
|
+
def run
|
49
|
+
redis = Redis.new(default_redis_options)
|
50
|
+
|
51
|
+
current_value = redis.get(config[:redis_key]).to_i
|
52
|
+
|
53
|
+
if config[:comparator] == "eq"
|
54
|
+
if current_value == config[:redis_compare_value].to_i
|
55
|
+
ok "Redis #{config[:redis_compare_value]} equals Value stored in redis"
|
56
|
+
else
|
57
|
+
critical "Redis values are not equal, Stored value is #{current_value}, and check value is: #{config[:redis_compare_value]}"
|
58
|
+
end
|
59
|
+
elsif config[:comparator] == "gt"
|
60
|
+
if current_value > config[:redis_compare_value].to_i
|
61
|
+
ok "Redis value stored (#{current_value}) is greater than compaired value (#{config[:redis_compare_value]})"
|
62
|
+
else
|
63
|
+
critical "Redis value stored (#{current_value}) is not greater than compaired value (#{config[:redis_compare_value]})"
|
64
|
+
end
|
65
|
+
elsif config[:comparator] == "lt"
|
66
|
+
if current_value < config[:redis_compare_value].to_i
|
67
|
+
ok "Redis value stored (#{current_value}) is less than compaired value (#{config[:redis_compare_value]})"
|
68
|
+
else
|
69
|
+
critical "Redis value stored (#{current_value}) is not less than compaired value (#{config[:redis_compare_value]})"
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
rescue StandardError
|
74
|
+
send(config[:conn_failure_status], "Could not connect to Redis server on #{redis_endpoint}")
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
require 'redis'
|
2
|
+
require 'sensu-plugin/metric/cli'
|
3
|
+
|
4
|
+
module RedisClientOptions
|
5
|
+
def self.included(base)
|
6
|
+
base.extend(ClassMethods)
|
7
|
+
base.class_eval do
|
8
|
+
_configure_options
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def default_redis_options
|
13
|
+
opts = {}
|
14
|
+
opts[:password] = config[:password] if config[:password]
|
15
|
+
opts[:timeout] = config[:timeout] if config[:timeout]
|
16
|
+
opts[:db] = config[:database] if config[:database]
|
17
|
+
|
18
|
+
if config[:socket]
|
19
|
+
opts[:path] = config[:socket]
|
20
|
+
else
|
21
|
+
opts[:host] = config[:host]
|
22
|
+
opts[:port] = config[:port]
|
23
|
+
end
|
24
|
+
opts
|
25
|
+
end
|
26
|
+
|
27
|
+
def redis_endpoint
|
28
|
+
if config[:socket]
|
29
|
+
"unix://#{config[:socket]}"
|
30
|
+
else
|
31
|
+
"#{config[:host]}:#{config[:port]}"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
module ClassMethods
|
36
|
+
def _configure_options
|
37
|
+
option :socket,
|
38
|
+
short: '-s SOCKET',
|
39
|
+
long: '--socket SOCKET',
|
40
|
+
description: 'Redis socket to connect to (overrides Host and Port)',
|
41
|
+
required: false
|
42
|
+
|
43
|
+
option :host,
|
44
|
+
short: '-h HOST',
|
45
|
+
long: '--host HOST',
|
46
|
+
description: 'Redis Host to connect to',
|
47
|
+
required: false,
|
48
|
+
default: Redis::Client::DEFAULTS[:host]
|
49
|
+
|
50
|
+
option :port,
|
51
|
+
short: '-p PORT',
|
52
|
+
long: '--port PORT',
|
53
|
+
description: 'Redis Port to connect to',
|
54
|
+
proc: proc(&:to_i),
|
55
|
+
required: false,
|
56
|
+
default: Redis::Client::DEFAULTS[:port]
|
57
|
+
|
58
|
+
option :database,
|
59
|
+
short: '-n DATABASE',
|
60
|
+
long: '--dbnumber DATABASE',
|
61
|
+
description: 'Redis database number to connect to',
|
62
|
+
proc: proc(&:to_i),
|
63
|
+
required: false,
|
64
|
+
default: Redis::Client::DEFAULTS[:db]
|
65
|
+
|
66
|
+
option :password,
|
67
|
+
short: '-P PASSWORD',
|
68
|
+
long: '--password PASSWORD',
|
69
|
+
description: 'Redis Password to connect with'
|
70
|
+
|
71
|
+
option :conn_failure_status,
|
72
|
+
long: '--conn-failure-status EXIT_STATUS',
|
73
|
+
description: 'Returns the following exit status for Redis connection failures',
|
74
|
+
default: 'critical',
|
75
|
+
in: %w[unknown warning critical]
|
76
|
+
|
77
|
+
option :timeout,
|
78
|
+
short: '-t TIMEOUT',
|
79
|
+
long: '--timeout TIMEOUT',
|
80
|
+
description: 'Redis connection timeout',
|
81
|
+
proc: proc(&:to_f),
|
82
|
+
required: false,
|
83
|
+
default: Redis::Client::DEFAULTS[:timeout]
|
84
|
+
|
85
|
+
option :reconnect_attempts,
|
86
|
+
description: 'Reconnect attempts to Redis host',
|
87
|
+
short: '-r ATTEMPTS',
|
88
|
+
long: '--reconnect ATTEMPTS',
|
89
|
+
proc: proc(&:to_i),
|
90
|
+
default: Redis::Client::DEFAULTS[:reconnect_attempts]
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
metadata
ADDED
@@ -0,0 +1,276 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sumo-check-redis-integer
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Sumo
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-03-29 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: redis
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.3'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.3'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.7'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.7'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: codeclimate-test-reporter
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.4'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0.4'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: github-markup
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.3'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.3'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: kitchen-docker
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '2.6'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '2.6'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: kitchen-localhost
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0.3'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0.3'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: mixlib-shellout
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "<"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 2.3.0
|
118
|
+
- - "~>"
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '2.2'
|
121
|
+
type: :development
|
122
|
+
prerelease: false
|
123
|
+
version_requirements: !ruby/object:Gem::Requirement
|
124
|
+
requirements:
|
125
|
+
- - "<"
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
version: 2.3.0
|
128
|
+
- - "~>"
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '2.2'
|
131
|
+
- !ruby/object:Gem::Dependency
|
132
|
+
name: pry
|
133
|
+
requirement: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - "~>"
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '0.10'
|
138
|
+
type: :development
|
139
|
+
prerelease: false
|
140
|
+
version_requirements: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- - "~>"
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '0.10'
|
145
|
+
- !ruby/object:Gem::Dependency
|
146
|
+
name: rake
|
147
|
+
requirement: !ruby/object:Gem::Requirement
|
148
|
+
requirements:
|
149
|
+
- - "~>"
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: '10.0'
|
152
|
+
type: :development
|
153
|
+
prerelease: false
|
154
|
+
version_requirements: !ruby/object:Gem::Requirement
|
155
|
+
requirements:
|
156
|
+
- - "~>"
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '10.0'
|
159
|
+
- !ruby/object:Gem::Dependency
|
160
|
+
name: redcarpet
|
161
|
+
requirement: !ruby/object:Gem::Requirement
|
162
|
+
requirements:
|
163
|
+
- - "~>"
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
version: '3.2'
|
166
|
+
type: :development
|
167
|
+
prerelease: false
|
168
|
+
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
requirements:
|
170
|
+
- - "~>"
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: '3.2'
|
173
|
+
- !ruby/object:Gem::Dependency
|
174
|
+
name: rspec
|
175
|
+
requirement: !ruby/object:Gem::Requirement
|
176
|
+
requirements:
|
177
|
+
- - "~>"
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: '3.1'
|
180
|
+
type: :development
|
181
|
+
prerelease: false
|
182
|
+
version_requirements: !ruby/object:Gem::Requirement
|
183
|
+
requirements:
|
184
|
+
- - "~>"
|
185
|
+
- !ruby/object:Gem::Version
|
186
|
+
version: '3.1'
|
187
|
+
- !ruby/object:Gem::Dependency
|
188
|
+
name: rubocop
|
189
|
+
requirement: !ruby/object:Gem::Requirement
|
190
|
+
requirements:
|
191
|
+
- - "~>"
|
192
|
+
- !ruby/object:Gem::Version
|
193
|
+
version: 0.51.0
|
194
|
+
type: :development
|
195
|
+
prerelease: false
|
196
|
+
version_requirements: !ruby/object:Gem::Requirement
|
197
|
+
requirements:
|
198
|
+
- - "~>"
|
199
|
+
- !ruby/object:Gem::Version
|
200
|
+
version: 0.51.0
|
201
|
+
- !ruby/object:Gem::Dependency
|
202
|
+
name: serverspec
|
203
|
+
requirement: !ruby/object:Gem::Requirement
|
204
|
+
requirements:
|
205
|
+
- - "~>"
|
206
|
+
- !ruby/object:Gem::Version
|
207
|
+
version: 2.36.1
|
208
|
+
type: :development
|
209
|
+
prerelease: false
|
210
|
+
version_requirements: !ruby/object:Gem::Requirement
|
211
|
+
requirements:
|
212
|
+
- - "~>"
|
213
|
+
- !ruby/object:Gem::Version
|
214
|
+
version: 2.36.1
|
215
|
+
- !ruby/object:Gem::Dependency
|
216
|
+
name: test-kitchen
|
217
|
+
requirement: !ruby/object:Gem::Requirement
|
218
|
+
requirements:
|
219
|
+
- - "~>"
|
220
|
+
- !ruby/object:Gem::Version
|
221
|
+
version: 1.16.0
|
222
|
+
type: :development
|
223
|
+
prerelease: false
|
224
|
+
version_requirements: !ruby/object:Gem::Requirement
|
225
|
+
requirements:
|
226
|
+
- - "~>"
|
227
|
+
- !ruby/object:Gem::Version
|
228
|
+
version: 1.16.0
|
229
|
+
- !ruby/object:Gem::Dependency
|
230
|
+
name: yard
|
231
|
+
requirement: !ruby/object:Gem::Requirement
|
232
|
+
requirements:
|
233
|
+
- - "~>"
|
234
|
+
- !ruby/object:Gem::Version
|
235
|
+
version: 0.9.11
|
236
|
+
type: :development
|
237
|
+
prerelease: false
|
238
|
+
version_requirements: !ruby/object:Gem::Requirement
|
239
|
+
requirements:
|
240
|
+
- - "~>"
|
241
|
+
- !ruby/object:Gem::Version
|
242
|
+
version: 0.9.11
|
243
|
+
description:
|
244
|
+
email: ogg@sr375.com
|
245
|
+
executables:
|
246
|
+
- sumo-check-redis-integer-value.rb
|
247
|
+
extensions: []
|
248
|
+
extra_rdoc_files: []
|
249
|
+
files:
|
250
|
+
- bin/sumo-check-redis-integer-value.rb
|
251
|
+
- lib/redis_client_options.rb
|
252
|
+
homepage:
|
253
|
+
licenses: []
|
254
|
+
metadata: {}
|
255
|
+
post_install_message: You can use the embedded Ruby by setting EMBEDDED_RUBY=true
|
256
|
+
in /etc/default/sensu
|
257
|
+
rdoc_options: []
|
258
|
+
require_paths:
|
259
|
+
- lib
|
260
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
261
|
+
requirements:
|
262
|
+
- - ">="
|
263
|
+
- !ruby/object:Gem::Version
|
264
|
+
version: 2.1.0
|
265
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
266
|
+
requirements:
|
267
|
+
- - ">="
|
268
|
+
- !ruby/object:Gem::Version
|
269
|
+
version: '0'
|
270
|
+
requirements: []
|
271
|
+
rubyforge_project:
|
272
|
+
rubygems_version: 2.6.13
|
273
|
+
signing_key:
|
274
|
+
specification_version: 4
|
275
|
+
summary: a simple sensu check to check redis integer values
|
276
|
+
test_files: []
|