sumo-check-redis-length 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-length.rb +43 -0
- data/bin/sumo-metric-redis-length.rb +32 -0
- data/lib/redis_client_options.rb +93 -0
- metadata +278 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: baa05f5c3a0de9df765e42f09ca37b90e3cdc311
|
4
|
+
data.tar.gz: 7e42a96d6278f3fc582b2dbcebad05eb74bf0f74
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3e33a874959509675ce1095471f00579d92ce05eee4b49cebd6b2b43903309ef03db9913b8247cbb79c8a85f4aa78c214cfdb999114acdbeb449a8fe815d6153
|
7
|
+
data.tar.gz: 3435d495d64c1714191a4af86016501d52a025ad7487eb96d53441c05af883486ccb35a7e444af7f52f0621b542371316942b45eadbce3ac1df15c543ff0c69d
|
@@ -0,0 +1,43 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'sensu-plugin/check/cli'
|
4
|
+
require 'redis'
|
5
|
+
require_relative '../lib/redis_client_options'
|
6
|
+
|
7
|
+
class SumoCheckRedisLengthValue < Sensu::Plugin::Check::CLI
|
8
|
+
include RedisClientOptions
|
9
|
+
|
10
|
+
option :redis_key,
|
11
|
+
short: '-K VALUE',
|
12
|
+
long: '--redis-key KEY',
|
13
|
+
description: 'Redis info key to monitor',
|
14
|
+
required: false,
|
15
|
+
default: 'role'
|
16
|
+
|
17
|
+
option :warn_value,
|
18
|
+
short: '-W VALUE',
|
19
|
+
long: '--warn_value VALUE',
|
20
|
+
description: 'Redis info key value to trigger alarm',
|
21
|
+
required: false,
|
22
|
+
default: 200
|
23
|
+
|
24
|
+
option :critical_value,
|
25
|
+
short: '-c VALUE',
|
26
|
+
long: '--critical_value VALUE',
|
27
|
+
description: 'Redis info key value to trigger alarm',
|
28
|
+
required: false,
|
29
|
+
default: 2000
|
30
|
+
|
31
|
+
def run
|
32
|
+
redis = Redis.new(default_redis_options)
|
33
|
+
current_value = redis.llen(config[:redis_key]).to_i
|
34
|
+
if current_value > config[:critical_value].to_i
|
35
|
+
critical "Length of Redis Key is at a crital level (#{current_value}"
|
36
|
+
elsif current_value > config[:warn_value].to_i
|
37
|
+
warning "Length of Redis Key is at a warning level (#{current_value}"
|
38
|
+
else
|
39
|
+
ok "length of Redis Key: #{current_value}"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
@@ -0,0 +1,32 @@
|
|
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
|
+
require 'sensu-plugin/check/cli'
|
13
|
+
require 'redis'
|
14
|
+
require_relative '../lib/redis_client_options'
|
15
|
+
|
16
|
+
|
17
|
+
class SumoCheckRedisLengthValue < Sensu::Plugin::Metric::CLI::Graphite
|
18
|
+
include RedisClientOptions
|
19
|
+
|
20
|
+
option :redis_key,
|
21
|
+
short: '-K VALUE',
|
22
|
+
long: '--redis-key KEY',
|
23
|
+
description: 'Redis info key to monitor',
|
24
|
+
required: false,
|
25
|
+
default: 'role'
|
26
|
+
|
27
|
+
def run
|
28
|
+
redis = Redis.new(default_redis_options)
|
29
|
+
ok config[:redis_key], redis.llen(config[:redis_key]).to_i
|
30
|
+
end
|
31
|
+
|
32
|
+
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,278 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sumo-check-redis-length
|
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-08-10 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'
|
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'
|
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'
|
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'
|
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'
|
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'
|
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'
|
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'
|
243
|
+
description:
|
244
|
+
email: ogg@sr375.com
|
245
|
+
executables:
|
246
|
+
- sumo-metric-redis-length.rb
|
247
|
+
- sumo-check-redis-length.rb
|
248
|
+
extensions: []
|
249
|
+
extra_rdoc_files: []
|
250
|
+
files:
|
251
|
+
- bin/sumo-check-redis-length.rb
|
252
|
+
- bin/sumo-metric-redis-length.rb
|
253
|
+
- lib/redis_client_options.rb
|
254
|
+
homepage:
|
255
|
+
licenses: []
|
256
|
+
metadata: {}
|
257
|
+
post_install_message: You can use the embedded Ruby by setting EMBEDDED_RUBY=true
|
258
|
+
in /etc/default/sensu
|
259
|
+
rdoc_options: []
|
260
|
+
require_paths:
|
261
|
+
- lib
|
262
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
263
|
+
requirements:
|
264
|
+
- - ">="
|
265
|
+
- !ruby/object:Gem::Version
|
266
|
+
version: 2.1.0
|
267
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
268
|
+
requirements:
|
269
|
+
- - ">="
|
270
|
+
- !ruby/object:Gem::Version
|
271
|
+
version: '0'
|
272
|
+
requirements: []
|
273
|
+
rubyforge_project:
|
274
|
+
rubygems_version: 2.6.13
|
275
|
+
signing_key:
|
276
|
+
specification_version: 4
|
277
|
+
summary: a simple sensu check to check redis length values
|
278
|
+
test_files: []
|