sensu-plugins-redis 2.3.0 → 2.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
- SHA256:
3
- metadata.gz: 510e91ccc0d8e58148396b4e61037abcb7389ab0ac2af0302eafded20f772c99
4
- data.tar.gz: c421f28a6621afd01f2cec99afea1ca2eec2b66861201461a7e3e71d58f87f2c
2
+ SHA1:
3
+ metadata.gz: fcd104e903b24d8ccf311894925121ac6a79f3e2
4
+ data.tar.gz: ccd8600530603998ac4bb97e8566d34ca51bd29a
5
5
  SHA512:
6
- metadata.gz: e6db91c546252b6876ef148d1ff429bd64f50fa860287ffd13a70a49e19b7e7c4cdef2340104548210e332b916051ceebf8c5743b1cee76670b6bd006f0d66cb
7
- data.tar.gz: 8d3677f37dedf02c904b7d07eed376660aa812f51d8b040f3ca0953632d3c821569388b873e0a61467e0abad1dde66e5c946344243264f6435a2a356123d6441
6
+ metadata.gz: 5d0d86a5c2f2de6d5ed2a3aa523a2b9edbf4b7f6be84d450fdcad135dd91ceb4c105e649a4c5e58b10c1018612f2db6cbf08b629c35a1aabd1cf370c97cdddda
7
+ data.tar.gz: 002af62281c3d9f956fa44afaad55d0636460f0f6ab415867bb41bf521e52b676744111ea38d451db484e6576b36930b141ce0cd2f34446a219172bc9eaa1a23
data/CHANGELOG.md CHANGED
@@ -6,6 +6,10 @@ Which is based on [Keep A Changelog](http://keepachangelog.com/)
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [2.3.1] - 2017-12-08
10
+ ### Fixed
11
+ - ensure that `--socket` option is properly parsed and takes precedence over `--host`/`--port` (@mbyczkowski)
12
+
9
13
  ## [2.3.0] - 2017-11-12
10
14
  ### Added
11
15
  - metrics-redis-llen.rb - Support passing multiple comma separated keys (@Evesy)
@@ -123,7 +127,8 @@ Which is based on [Keep A Changelog](http://keepachangelog.com/)
123
127
  ### Added
124
128
  - initial release
125
129
 
126
- [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-redis/compare/2.3.0...HEAD
130
+ [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-redis/compare/2.3.1...HEAD
131
+ [2.3.1]: https://github.com/sensu-plugins/sensu-plugins-redis/compare/2.3.0...2.3.1
127
132
  [2.3.0]: https://github.com/sensu-plugins/sensu-plugins-redis/compare/2.2.2...2.3.0
128
133
  [2.2.2]: https://github.com/sensu-plugins/sensu-plugins-redis/compare/2.2.1...2.2.2
129
134
  [2.2.1]: https://github.com/sensu-plugins/sensu-plugins-redis/compare/2.2.0...2.2.1
data/README.md CHANGED
@@ -10,6 +10,7 @@
10
10
 
11
11
  ## Files
12
12
  * bin/check-redis-info.rb
13
+ * bin/check-redis-keys.rb
13
14
  * bin/check-redis-list-length.rb
14
15
  * bin/check-redis-memory.rb
15
16
  * bin/check-redis-memory-percentage.rb
@@ -25,3 +26,6 @@
25
26
  [Installation and Setup](http://sensu-plugins.io/docs/installation_instructions.html)
26
27
 
27
28
  ## Notes
29
+
30
+ [Developer Guidelines](http://sensu-plugins.io/docs/developer_guidelines.html)
31
+ [Testing](http://sensu-plugins.io/docs/testing.html)
@@ -18,33 +18,10 @@
18
18
 
19
19
  require 'sensu-plugin/check/cli'
20
20
  require 'redis'
21
+ require_relative '../lib/redis_client_options'
21
22
 
22
23
  class RedisSlaveCheck < Sensu::Plugin::Check::CLI
23
- option :socket,
24
- short: '-s SOCKET',
25
- long: '--socket SOCKET',
26
- description: 'Redis socket to connect to (overrides Host and Port)',
27
- required: false
28
-
29
- option :host,
30
- short: '-h HOST',
31
- long: '--host HOST',
32
- description: 'Redis Host to connect to',
33
- required: false,
34
- default: '127.0.0.1'
35
-
36
- option :port,
37
- short: '-p PORT',
38
- long: '--port PORT',
39
- description: 'Redis Port to connect to',
40
- proc: proc(&:to_i),
41
- required: false,
42
- default: 6379
43
-
44
- option :password,
45
- short: '-P PASSWORD',
46
- long: '--password PASSWORD',
47
- description: 'Redis Password to connect with'
24
+ include RedisClientOptions
48
25
 
49
26
  option :redis_info_key,
50
27
  short: '-K VALUE',
@@ -60,29 +37,8 @@ class RedisSlaveCheck < Sensu::Plugin::Check::CLI
60
37
  required: false,
61
38
  default: 'master'
62
39
 
63
- option :conn_failure_status,
64
- long: '--conn-failure-status EXIT_STATUS',
65
- description: 'Returns the following exit status for Redis connection failures',
66
- default: 'unknown',
67
- in: %w(unknown warning critical)
68
-
69
- option :timeout,
70
- short: '-t TIMEOUT',
71
- long: '--timeout TIMEOUT',
72
- description: 'Redis connection timeout',
73
- proc: proc(&:to_i),
74
- required: false,
75
- default: 5
76
-
77
40
  def run
78
- options = if config[:socket]
79
- { path: socket }
80
- else
81
- { host: config[:host], port: config[:port], timeout: config[:timeout] }
82
- end
83
-
84
- options[:password] = config[:password] if config[:password]
85
- redis = Redis.new(options)
41
+ redis = Redis.new(default_redis_options)
86
42
 
87
43
  if redis.info.fetch(config[:redis_info_key].to_s) == config[:redis_info_value].to_s
88
44
  ok "Redis #{config[:redis_info_key]} is #{config[:redis_info_value]}"
@@ -90,6 +46,6 @@ class RedisSlaveCheck < Sensu::Plugin::Check::CLI
90
46
  critical "Redis #{config[:redis_info_key]} is #{redis.info.fetch(config[:redis_info_key].to_s)}!"
91
47
  end
92
48
  rescue
93
- send(config[:conn_failure_status], "Could not connect to Redis server on #{config[:host]}:#{config[:port]}")
49
+ send(config[:conn_failure_status], "Could not connect to Redis server on #{redis_endpoint}")
94
50
  end
95
51
  end
@@ -12,41 +12,10 @@
12
12
 
13
13
  require 'sensu-plugin/check/cli'
14
14
  require 'redis'
15
+ require_relative '../lib/redis_client_options'
15
16
 
16
17
  class RedisKeysCheck < Sensu::Plugin::Check::CLI
17
- option :socket,
18
- short: '-s SOCKET',
19
- long: '--socket SOCKET',
20
- description: 'Redis socket to connect to (overrides Host and Port)',
21
- required: false
22
-
23
- option :host,
24
- short: '-h HOST',
25
- long: '--host HOST',
26
- description: 'Redis Host to connect to',
27
- required: false,
28
- default: '127.0.0.1'
29
-
30
- option :port,
31
- short: '-p PORT',
32
- long: '--port PORT',
33
- description: 'Redis Port to connect to',
34
- proc: proc(&:to_i),
35
- required: false,
36
- default: 6379
37
-
38
- option :database,
39
- short: '-n DATABASE',
40
- long: '--dbnumber DATABASE',
41
- description: 'Redis database number to connect to',
42
- proc: proc(&:to_i),
43
- required: false,
44
- default: 0
45
-
46
- option :password,
47
- short: '-P PASSWORD',
48
- long: '--password PASSWORD',
49
- description: 'Redis Password to connect with'
18
+ include RedisClientOptions
50
19
 
51
20
  option :warn,
52
21
  short: '-w COUNT',
@@ -68,30 +37,8 @@ class RedisKeysCheck < Sensu::Plugin::Check::CLI
68
37
  required: false,
69
38
  default: '*'
70
39
 
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: 'unknown',
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_i),
82
- required: false,
83
- default: 5
84
-
85
40
  def run
86
- options = if config[:socket]
87
- { path: socket }
88
- else
89
- { host: config[:host], port: config[:port], timeout: config[:timeout] }
90
- end
91
-
92
- options[:db] = config[:database]
93
- options[:password] = config[:password] if config[:password]
94
- redis = Redis.new(options)
41
+ redis = Redis.new(default_redis_options)
95
42
 
96
43
  length = redis.keys(config[:pattern]).size
97
44
 
@@ -103,6 +50,6 @@ class RedisKeysCheck < Sensu::Plugin::Check::CLI
103
50
  ok "Redis list #{config[:pattern]} length is above thresholds"
104
51
  end
105
52
  rescue
106
- send(config[:conn_failure_status], "Could not connect to Redis server on #{config[:host]}:#{config[:port]}")
53
+ send(config[:conn_failure_status], "Could not connect to Redis server on #{redis_endpoint}")
107
54
  end
108
55
  end
@@ -13,41 +13,10 @@
13
13
 
14
14
  require 'sensu-plugin/check/cli'
15
15
  require 'redis'
16
+ require_relative '../lib/redis_client_options'
16
17
 
17
18
  class RedisListLengthCheck < Sensu::Plugin::Check::CLI
18
- option :socket,
19
- short: '-s SOCKET',
20
- long: '--socket SOCKET',
21
- description: 'Redis socket to connect to (overrides Host and Port)',
22
- required: false
23
-
24
- option :host,
25
- short: '-h HOST',
26
- long: '--host HOST',
27
- description: 'Redis Host to connect to',
28
- required: false,
29
- default: '127.0.0.1'
30
-
31
- option :port,
32
- short: '-p PORT',
33
- long: '--port PORT',
34
- description: 'Redis Port to connect to',
35
- proc: proc(&:to_i),
36
- required: false,
37
- default: 6379
38
-
39
- option :database,
40
- short: '-n DATABASE',
41
- long: '--dbnumber DATABASE',
42
- description: 'Redis database number to connect to',
43
- proc: proc(&:to_i),
44
- required: false,
45
- default: 0
46
-
47
- option :password,
48
- short: '-P PASSWORD',
49
- long: '--password PASSWORD',
50
- description: 'Redis Password to connect with'
19
+ include RedisClientOptions
51
20
 
52
21
  option :warn,
53
22
  short: '-w COUNT',
@@ -69,30 +38,8 @@ class RedisListLengthCheck < Sensu::Plugin::Check::CLI
69
38
  description: 'Redis list KEY to check',
70
39
  required: true
71
40
 
72
- option :conn_failure_status,
73
- long: '--conn-failure-status EXIT_STATUS',
74
- description: 'Returns the following exit status for Redis connection failures',
75
- default: 'unknown',
76
- in: %w(unknown warning critical)
77
-
78
- option :timeout,
79
- short: '-t TIMEOUT',
80
- long: '--timeout TIMEOUT',
81
- description: 'Redis connection timeout',
82
- proc: proc(&:to_i),
83
- required: false,
84
- default: 5
85
-
86
41
  def run
87
- options = if config[:socket]
88
- { path: config[:socket] }
89
- else
90
- { host: config[:host], port: config[:port], timeout: config[:timeout] }
91
- end
92
-
93
- options[:db] = config[:database]
94
- options[:password] = config[:password] if config[:password]
95
- redis = Redis.new(options)
42
+ redis = Redis.new(default_redis_options)
96
43
 
97
44
  length = case redis.type(config[:key])
98
45
  when 'hash'
@@ -111,6 +58,6 @@ class RedisListLengthCheck < Sensu::Plugin::Check::CLI
111
58
  ok "Redis list #{config[:key]} length (#{length}) is below thresholds"
112
59
  end
113
60
  rescue
114
- send(config[:conn_failure_status], "Could not connect to Redis server on #{config[:host]}:#{config[:port]}")
61
+ send(config[:conn_failure_status], "Could not connect to Redis server on #{redis_endpoint}")
115
62
  end
116
63
  end
@@ -29,32 +29,10 @@
29
29
 
30
30
  require 'sensu-plugin/check/cli'
31
31
  require 'redis'
32
- class RedisChecks < Sensu::Plugin::Check::CLI
33
- option :socket,
34
- short: '-s SOCKET',
35
- long: '--socket SOCKET',
36
- description: 'Redis socket to connect to (overrides Host and Port)',
37
- required: false
38
-
39
- option :host,
40
- short: '-h HOST',
41
- long: '--host HOST',
42
- description: 'Redis Host to connect to',
43
- required: false,
44
- default: '127.0.0.1'
32
+ require_relative '../lib/redis_client_options'
45
33
 
46
- option :port,
47
- short: '-p PORT',
48
- long: '--port PORT',
49
- description: 'Redis Port to connect to',
50
- proc: proc(&:to_i),
51
- required: false,
52
- default: 6379
53
-
54
- option :password,
55
- short: '-P PASSWORD',
56
- long: '--password PASSWORD',
57
- description: 'Redis Password to connect with'
34
+ class RedisChecks < Sensu::Plugin::Check::CLI
35
+ include RedisClientOptions
58
36
 
59
37
  option :warn_mem,
60
38
  short: '-w percentage',
@@ -70,33 +48,12 @@ class RedisChecks < Sensu::Plugin::Check::CLI
70
48
  proc: proc(&:to_i),
71
49
  required: true
72
50
 
73
- option :conn_failure_status,
74
- long: '--conn-failure-status EXIT_STATUS',
75
- description: 'Returns the following exit status for Redis connection failures',
76
- default: 'unknown',
77
- in: %w(unknown warning critical)
78
-
79
- option :timeout,
80
- short: '-t TIMEOUT',
81
- long: '--timeout TIMEOUT',
82
- description: 'Redis connection timeout',
83
- proc: proc(&:to_i),
84
- required: false,
85
- default: 5
86
-
87
51
  def system_memory
88
52
  `awk '/MemTotal/{print$2}' /proc/meminfo`.to_f * 1024
89
53
  end
90
54
 
91
55
  def run
92
- options = if config[:socket]
93
- { path: socket }
94
- else
95
- { host: config[:host], port: config[:port], timeout: config[:timeout] }
96
- end
97
-
98
- options[:password] = config[:password] if config[:password]
99
- redis = Redis.new(options)
56
+ redis = Redis.new(default_redis_options)
100
57
 
101
58
  redis_info = redis.info
102
59
  max_memory = redis_info.fetch('maxmemory', 0).to_i
@@ -117,6 +74,6 @@ class RedisChecks < Sensu::Plugin::Check::CLI
117
74
  ok "Redis memory usage: #{used_memory}% is below defined limits"
118
75
  end
119
76
  rescue
120
- send(config[:conn_failure_status], "Could not connect to Redis server on #{config[:host]}:#{config[:port]}")
77
+ send(config[:conn_failure_status], "Could not connect to Redis server on #{redis_endpoint}")
121
78
  end
122
79
  end
@@ -10,33 +10,10 @@
10
10
 
11
11
  require 'sensu-plugin/check/cli'
12
12
  require 'redis'
13
+ require_relative '../lib/redis_client_options'
13
14
 
14
15
  class RedisChecks < Sensu::Plugin::Check::CLI
15
- option :socket,
16
- short: '-s SOCKET',
17
- long: '--socket SOCKET',
18
- description: 'Redis socket to connect to (overrides Host and Port)',
19
- required: false
20
-
21
- option :host,
22
- short: '-h HOST',
23
- long: '--host HOST',
24
- description: 'Redis Host to connect to',
25
- required: false,
26
- default: '127.0.0.1'
27
-
28
- option :port,
29
- short: '-p PORT',
30
- long: '--port PORT',
31
- description: 'Redis Port to connect to',
32
- proc: proc(&:to_i),
33
- required: false,
34
- default: 6379
35
-
36
- option :password,
37
- short: '-P PASSWORD',
38
- long: '--password PASSWORD',
39
- description: 'Redis Password to connect with'
16
+ include RedisClientOptions
40
17
 
41
18
  option :warn_mem,
42
19
  short: '-w KB',
@@ -52,29 +29,8 @@ class RedisChecks < Sensu::Plugin::Check::CLI
52
29
  proc: proc(&:to_i),
53
30
  required: true
54
31
 
55
- option :conn_failure_status,
56
- long: '--conn-failure-status EXIT_STATUS',
57
- description: 'Returns the following exit status for Redis connection failures',
58
- default: 'unknown',
59
- in: %w(unknown warning critical)
60
-
61
- option :timeout,
62
- short: '-t TIMEOUT',
63
- long: '--timeout TIMEOUT',
64
- description: 'Redis connection timeout',
65
- proc: proc(&:to_i),
66
- required: false,
67
- default: 5
68
-
69
32
  def run
70
- options = if config[:socket]
71
- { path: socket }
72
- else
73
- { host: config[:host], port: config[:port], timeout: config[:timeout] }
74
- end
75
-
76
- options[:password] = config[:password] if config[:password]
77
- redis = Redis.new(options)
33
+ redis = Redis.new(default_redis_options)
78
34
 
79
35
  used_memory = redis.info.fetch('used_memory').to_i.div(1024)
80
36
  warn_memory = config[:warn_mem]
@@ -87,6 +43,6 @@ class RedisChecks < Sensu::Plugin::Check::CLI
87
43
  ok "Redis memory usage: #{used_memory}KB is below defined limits"
88
44
  end
89
45
  rescue
90
- send(config[:conn_failure_status], "Could not connect to Redis server on #{config[:host]}:#{config[:port]}")
46
+ send(config[:conn_failure_status], "Could not connect to Redis server on #{redis_endpoint}")
91
47
  end
92
48
  end
@@ -29,71 +29,18 @@
29
29
 
30
30
  require 'sensu-plugin/check/cli'
31
31
  require 'redis'
32
+ require_relative '../lib/redis_client_options'
32
33
 
33
34
  class RedisPing < Sensu::Plugin::Check::CLI
34
- option :socket,
35
- short: '-s SOCKET',
36
- long: '--socket SOCKET',
37
- description: 'Redis socket to connect to (overrides Host and Port)',
38
- required: false
39
-
40
- option :host,
41
- short: '-h HOST',
42
- long: '--host HOST',
43
- description: 'Redis Host to connect to',
44
- required: false,
45
- default: '127.0.0.1'
46
-
47
- option :port,
48
- short: '-p PORT',
49
- long: '--port PORT',
50
- description: 'Redis Port to connect to',
51
- proc: proc(&:to_i),
52
- required: false,
53
- default: 6379
54
-
55
- option :password,
56
- short: '-P PASSWORD',
57
- long: '--password PASSWORD',
58
- description: 'Redis Password to connect with'
59
-
60
- option :conn_failure_status,
61
- long: '--conn-failure-status EXIT_STATUS',
62
- description: 'Returns the following exit status for Redis connection failures',
63
- default: 'critical',
64
- in: %w(unknown warning critical)
65
-
66
- option :timeout,
67
- short: '-t TIMEOUT',
68
- long: '--timeout TIMEOUT',
69
- description: 'Redis connection timeout',
70
- proc: proc(&:to_i),
71
- required: false,
72
- default: 5
73
-
74
- def redis_options
75
- if config[:socket]
76
- {
77
- path: config[:socket],
78
- password: config[:password]
79
- }
80
- else
81
- {
82
- host: config[:host],
83
- port: config[:port],
84
- password: config[:password],
85
- timeout: config[:timeout]
86
- }
87
- end
88
- end
35
+ include RedisClientOptions
89
36
 
90
37
  def run
91
- if Redis.new(redis_options).ping == 'PONG'
38
+ if Redis.new(default_redis_options).ping == 'PONG'
92
39
  ok 'Redis is alive'
93
40
  else
94
41
  critical 'Redis did not respond to the ping command'
95
42
  end
96
43
  rescue
97
- send(config[:conn_failure_status], "Could not connect to Redis server on #{config[:host]}:#{config[:port]}")
44
+ send(config[:conn_failure_status], "Could not connect to Redis server on #{redis_endpoint}")
98
45
  end
99
46
  end
@@ -4,57 +4,13 @@
4
4
 
5
5
  require 'sensu-plugin/check/cli'
6
6
  require 'redis'
7
+ require_relative '../lib/redis_client_options'
7
8
 
8
9
  class RedisSlaveCheck < Sensu::Plugin::Check::CLI
9
- option :socket,
10
- short: '-s SOCKET',
11
- long: '--socket SOCKET',
12
- description: 'Redis socket to connect to (overrides Host and Port)',
13
- required: false
14
-
15
- option :host,
16
- short: '-h HOST',
17
- long: '--host HOST',
18
- description: 'Redis Host to connect to',
19
- required: false,
20
- default: '127.0.0.1'
21
-
22
- option :port,
23
- short: '-p PORT',
24
- long: '--port PORT',
25
- description: 'Redis Port to connect to',
26
- proc: proc(&:to_i),
27
- required: false,
28
- default: 6379
29
-
30
- option :password,
31
- short: '-P PASSWORD',
32
- long: '--password PASSWORD',
33
- description: 'Redis Password to connect with'
34
-
35
- option :conn_failure_status,
36
- long: '--conn-failure-status EXIT_STATUS',
37
- description: 'Returns the following exit status for Redis connection failures',
38
- default: 'unknown',
39
- in: %w(unknown warning critical)
40
-
41
- option :timeout,
42
- short: '-t TIMEOUT',
43
- long: '--timeout TIMEOUT',
44
- description: 'Redis connection timeout',
45
- required: false,
46
- proc: proc(&:to_i),
47
- default: 5
10
+ include RedisClientOptions
48
11
 
49
12
  def run
50
- options = if config[:socket]
51
- { path: socket }
52
- else
53
- { host: config[:host], port: config[:port], timeout: config[:timeout] }
54
- end
55
-
56
- options[:password] = config[:password] if config[:password]
57
- redis = Redis.new(options)
13
+ redis = Redis.new(default_redis_options)
58
14
 
59
15
  if redis.info.fetch('role') == 'master'
60
16
  ok 'This redis server is master'
@@ -67,8 +23,8 @@ class RedisSlaveCheck < Sensu::Plugin::Check::CLI
67
23
  critical msg
68
24
  end
69
25
  rescue KeyError
70
- critical "Redis server on #{config[:host]}:#{config[:port]} is not master and does not have master_link_status"
26
+ critical "Redis server on #{redis_endpoint} is not master and does not have master_link_status"
71
27
  rescue
72
- send(config[:conn_failure_status], "Could not connect to Redis server on #{config[:host]}:#{config[:port]}")
28
+ send(config[:conn_failure_status], "Could not connect to Redis server on #{redis_endpoint}")
73
29
  end
74
30
  end
@@ -11,8 +11,11 @@
11
11
 
12
12
  require 'sensu-plugin/metric/cli'
13
13
  require 'redis'
14
+ require_relative '../lib/redis_client_options'
14
15
 
15
16
  class Redis2Graphite < Sensu::Plugin::Metric::CLI::Graphite
17
+ include RedisClientOptions
18
+
16
19
  # redis.c - sds genRedisInfoString(char *section)
17
20
  SKIP_KEYS_REGEX = [
18
21
  '^role',
@@ -47,77 +50,20 @@ class Redis2Graphite < Sensu::Plugin::Metric::CLI::Graphite
47
50
  'used_memory_rss_human'
48
51
  ].freeze
49
52
 
50
- option :socket,
51
- short: '-s SOCKET',
52
- long: '--socket SOCKET',
53
- description: 'Redis socket to connect to (overrides Host and Port)',
54
- required: false
55
-
56
- option :host,
57
- short: '-h HOST',
58
- long: '--host HOST',
59
- description: 'Redis Host to connect to',
60
- default: '127.0.0.1'
61
-
62
- option :port,
63
- short: '-p PORT',
64
- long: '--port PORT',
65
- description: 'Redis Port to connect to',
66
- proc: proc(&:to_i),
67
- default: 6379
68
-
69
- option :password,
70
- short: '-P PASSWORD',
71
- long: '--password PASSWORD',
72
- description: 'Redis Password to connect with'
73
-
74
53
  option :scheme,
75
54
  description: 'Metric naming scheme, text to prepend to metric',
76
55
  short: '-S SCHEME',
77
56
  long: '--scheme SCHEME',
78
57
  default: "#{Socket.gethostname}.redis"
79
58
 
80
- option :timeout,
81
- description: 'Timeout to connect to redis host',
82
- short: '-t TIMEOUT',
83
- long: '--timeout TIMEOUT',
84
- proc: proc(&:to_i),
85
- default: Redis::Client::DEFAULTS[:timeout]
86
-
87
- option :reconnect_attempts,
88
- description: 'Reconnect attempts to redis host',
89
- short: '-r ATTEMPTS',
90
- long: '--reconnect ATTEMPTS',
91
- proc: proc(&:to_i),
92
- default: Redis::Client::DEFAULTS[:reconnect_attempts]
93
-
94
59
  option :skip_keys_regex,
95
60
  description: 'a comma seperated list of keys to be skipped',
96
61
  short: '-k KEYS',
97
62
  long: '--skipkeys KEYS',
98
63
  default: nil
99
64
 
100
- option :conn_failure_status,
101
- long: '--conn-failure-status EXIT_STATUS',
102
- description: 'Returns the following exit status for Redis connection failures',
103
- default: 'unknown',
104
- in: %w(unknown warning critical)
105
-
106
65
  def run
107
- options = {
108
- timeout: config[:timeout],
109
- reconnect_attempts: config[:reconnect_attempts]
110
- }
111
-
112
- if config[:socket]
113
- options[:path] = config[:socket]
114
- else
115
- options[:host] = config[:host]
116
- options[:port] = config[:port]
117
- end
118
-
119
- options[:password] = config[:password] if config[:password]
120
- redis = Redis.new(options)
66
+ redis = Redis.new(default_redis_options)
121
67
  skip_keys = if !config[:skip_keys_regex].nil?
122
68
  config[:skip_keys_regex].split(',')
123
69
  else
@@ -149,6 +95,6 @@ class Redis2Graphite < Sensu::Plugin::Metric::CLI::Graphite
149
95
 
150
96
  ok
151
97
  rescue
152
- send(config[:conn_failure_status], "Could not connect to Redis server on #{config[:host]}:#{config[:port]}")
98
+ send(config[:conn_failure_status], "Could not connect to Redis server on #{redis_endpoint}")
153
99
  end
154
100
  end
@@ -9,39 +9,10 @@
9
9
 
10
10
  require 'sensu-plugin/metric/cli'
11
11
  require 'redis'
12
+ require_relative '../lib/redis_client_options'
12
13
 
13
14
  class RedisListLengthMetric < Sensu::Plugin::Metric::CLI::Graphite
14
- option :socket,
15
- short: '-s SOCKET',
16
- long: '--socket SOCKET',
17
- description: 'Redis socket to connect to (overrides Host and Port)',
18
- required: false
19
-
20
- option :host,
21
- short: '-h HOST',
22
- long: '--host HOST',
23
- description: 'Redis Host to connect to',
24
- default: '127.0.0.1'
25
-
26
- option :port,
27
- short: '-p PORT',
28
- long: '--port PORT',
29
- description: 'Redis Port to connect to',
30
- proc: proc(&:to_i),
31
- default: 6379
32
-
33
- option :database,
34
- short: '-n DATABASE',
35
- long: '--dbnumber DATABASE',
36
- description: 'Redis database number to connect to',
37
- proc: proc(&:to_i),
38
- required: false,
39
- default: 0
40
-
41
- option :password,
42
- short: '-P PASSWORD',
43
- long: '--password PASSWORD',
44
- description: 'Redis Password to connect with'
15
+ include RedisClientOptions
45
16
 
46
17
  option :scheme,
47
18
  description: 'Metric naming scheme, text to prepend to metric',
@@ -55,29 +26,15 @@ class RedisListLengthMetric < Sensu::Plugin::Metric::CLI::Graphite
55
26
  description: 'Comma separated list of keys to check',
56
27
  required: true
57
28
 
58
- option :conn_failure_status,
59
- long: '--conn-failure-status EXIT_STATUS',
60
- description: 'Returns the following exit status for Redis connection failures',
61
- default: 'unknown',
62
- in: %w(unknown warning critical)
63
-
64
29
  def run
65
- redis_keys = config[:key].split(',')
66
- options = if config[:socket]
67
- { path: socket }
68
- else
69
- { host: config[:host], port: config[:port] }
70
- end
71
-
72
- options[:db] = config[:database]
73
- options[:password] = config[:password] if config[:password]
74
- redis = Redis.new(options)
30
+ redis = Redis.new(default_redis_options)
75
31
 
32
+ redis_keys = config[:key].split(',')
76
33
  redis_keys.each do |key|
77
34
  output "#{config[:scheme]}.#{key}.items", redis.llen(key)
78
35
  end
79
36
  ok
80
37
  rescue
81
- send(config[:conn_failure_status], "Could not connect to Redis server on #{config[:host]}:#{config[:port]}")
38
+ send(config[:conn_failure_status], "Could not connect to Redis server on #{redis_endpoint}")
82
39
  end
83
40
  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
@@ -2,7 +2,7 @@ module SensuPluginsRedis
2
2
  module Version
3
3
  MAJOR = 2
4
4
  MINOR = 3
5
- PATCH = 0
5
+ PATCH = 1
6
6
 
7
7
  VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-redis
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0
4
+ version: 2.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sensu-Plugins and contributors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-12 00:00:00.000000000 Z
11
+ date: 2017-12-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sensu-plugin
@@ -229,14 +229,14 @@ description: |-
229
229
  email: "<sensu-users@googlegroups.com>"
230
230
  executables:
231
231
  - check-redis-memory.rb
232
+ - metrics-redis-llen.rb
233
+ - check-redis-ping.rb
234
+ - check-redis-memory-percentage.rb
232
235
  - check-redis-info.rb
233
- - check-redis-list-length.rb
236
+ - check-redis-slave-status.rb
234
237
  - check-redis-keys.rb
235
- - check-redis-memory-percentage.rb
236
- - check-redis-ping.rb
237
- - metrics-redis-llen.rb
238
238
  - metrics-redis-graphite.rb
239
- - check-redis-slave-status.rb
239
+ - check-redis-list-length.rb
240
240
  extensions: []
241
241
  extra_rdoc_files: []
242
242
  files:
@@ -252,6 +252,7 @@ files:
252
252
  - bin/check-redis-slave-status.rb
253
253
  - bin/metrics-redis-graphite.rb
254
254
  - bin/metrics-redis-llen.rb
255
+ - lib/redis_client_options.rb
255
256
  - lib/sensu-plugins-redis.rb
256
257
  - lib/sensu-plugins-redis/version.rb
257
258
  homepage: https://github.com/sensu-plugins/sensu-plugins-redis
@@ -280,7 +281,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
280
281
  version: '0'
281
282
  requirements: []
282
283
  rubyforge_project:
283
- rubygems_version: 2.7.2
284
+ rubygems_version: 2.5.2.1
284
285
  signing_key:
285
286
  specification_version: 4
286
287
  summary: Sensu plugins for working with redis