sensu-plugins-redis 2.3.0 → 2.3.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 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