sensu-plugins-rabbitmq 5.0.0 → 5.1.0
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 +4 -4
- data/CHANGELOG.md +6 -1
- data/README.md +1 -0
- data/bin/check-rabbitmq-consumer-utilisation.rb +120 -0
- data/lib/sensu-plugins-rabbitmq/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 82e03ad3782930ed8f79782b6e87218024e8e111a1a4e230b117b0eac38f7bac
|
4
|
+
data.tar.gz: 7f4d9a9c9abb26b6f9ca9a9f28cbf12bbeae7f11e783ae1a5c63647bcf1948d8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5e47ea6fd59814ab95780c0d6290a9f9695124bc96d3dc8a06c3586ed8abe977223aed16839805d939d49f4c83fc7347a5dbcbc944a56ad80c3f35fa38f3840a
|
7
|
+
data.tar.gz: fdcdd2d46d097b84874a3bba58d2272a1ba7bc4f9d4feacf23e726dfba75dc458199a93dc967bcc0d798eaeed3bbd7e69e6d640a0786e80e0dd979a5e4a841bf
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,10 @@ This CHANGELOG follows the format listed [here](https://github.com/sensu-plugins
|
|
5
5
|
|
6
6
|
## [Unreleased]
|
7
7
|
|
8
|
+
## [5.1.0] - 2018-05-15
|
9
|
+
### Added
|
10
|
+
- check-rabbitmq-consumer-utilisation.rb: Added new check for consumer utilisation. Seeded from check-rabbitmq-consumers.rb. (@monkey670)
|
11
|
+
|
8
12
|
## [5.0.0] - 2018-05-02
|
9
13
|
### Breaking Changes
|
10
14
|
- bump sensu-plugin version in dependencies to ~> 2.0. This should fix the issue where multiple versions of json (1.8.6 and 2.0.2) are being loaded, causing checks to fail (@mattdoller)
|
@@ -196,7 +200,8 @@ NOTE: this release changes the option flags in check-rabbitmq-node-health.rb to
|
|
196
200
|
- Remove copy paste errors in the Readme
|
197
201
|
- Removed Rubygems require Ruby 1.8.7 backwards compatibility from all plugins
|
198
202
|
|
199
|
-
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-rabbitmq/compare/5.
|
203
|
+
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-rabbitmq/compare/5.1.0...HEAD
|
204
|
+
[5.1.0]: https://github.com/sensu-plugins/sensu-plugins-rabbitmq/compare/5.0.0...5.1.0
|
200
205
|
[5.0.0]: https://github.com/sensu-plugins/sensu-plugins-rabbitmq/compare/4.1.1...5.0.0
|
201
206
|
[4.1.1]: https://github.com/sensu-plugins/sensu-plugins-rabbitmq/compare/4.1.0...4.1.1
|
202
207
|
[4.1.0]: https://github.com/sensu-plugins/sensu-plugins-rabbitmq/compare/4.0.1...4.1.0
|
data/README.md
CHANGED
@@ -13,6 +13,7 @@
|
|
13
13
|
* bin/check-rabbitmq-amqp-alive.rb
|
14
14
|
* bin/check-rabbitmq-cluster-health.rb
|
15
15
|
* bin/check-rabbitmq-consumers.rb
|
16
|
+
* bin/check-rabbitmq-consumer-utilisation.rb
|
16
17
|
* bin/check-rabbitmq-messages.rb
|
17
18
|
* bin/check-rabbitmq-network-partitions.rb
|
18
19
|
* bin/check-rabbitmq-node-health.rb
|
@@ -0,0 +1,120 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
# Check RabbitMQ consumer utilisation
|
5
|
+
# ===
|
6
|
+
#
|
7
|
+
# DESCRIPTION:
|
8
|
+
# This plugin checks the consumer utilisation percentage.
|
9
|
+
# The fraction of time in which the queue is able to immediately deliver
|
10
|
+
# messages to consumer. If this number drops in percentage this may result
|
11
|
+
# in slower message delivery and indicate issues with the queue.
|
12
|
+
#
|
13
|
+
# Seeded from check-rabbitmq-consumers.rb
|
14
|
+
#
|
15
|
+
# PLATFORMS:
|
16
|
+
# Linux, BSD, Solaris
|
17
|
+
#
|
18
|
+
# DEPENDENCIES:
|
19
|
+
# RabbitMQ rabbitmq_management plugin
|
20
|
+
# gem: sensu-plugin
|
21
|
+
# gem: carrot-top
|
22
|
+
#
|
23
|
+
# LICENSE:
|
24
|
+
# Copyright 2014 Daniel Kerwin <d.kerwin@gini.net>
|
25
|
+
# Copyright 2014 Tim Smith <tim@cozy.co>
|
26
|
+
# Copyright 2018 Mike Murray <37150283+monkey670@users.noreply.github.com>
|
27
|
+
#
|
28
|
+
# Released under the same terms as Sensu (the MIT license); see LICENSE
|
29
|
+
# for details.
|
30
|
+
|
31
|
+
require 'sensu-plugins-rabbitmq'
|
32
|
+
require 'sensu-plugins-rabbitmq/check'
|
33
|
+
|
34
|
+
# main plugin class
|
35
|
+
class CheckRabbitMQConsumerUtilisation < Sensu::Plugin::RabbitMQ::Check
|
36
|
+
option :regex,
|
37
|
+
description: 'Treat the --queue flag as a regular expression.',
|
38
|
+
long: '--regex',
|
39
|
+
boolean: true,
|
40
|
+
default: false
|
41
|
+
|
42
|
+
option :queue,
|
43
|
+
description: 'Comma separated list of RabbitMQ queues to monitor.',
|
44
|
+
long: '--queue queue_name'
|
45
|
+
|
46
|
+
option :exclude,
|
47
|
+
description: 'Comma separated list of RabbitMQ queues to NOT monitor. All others will be monitored.',
|
48
|
+
long: '--exclude queue_name'
|
49
|
+
|
50
|
+
option :warn,
|
51
|
+
short: '-w CONSUMER_UTILISATION',
|
52
|
+
long: '--warn CONSUMER_UTILISATION',
|
53
|
+
proc: proc(&:to_f),
|
54
|
+
description: 'WARNING consumer utilisation threshold',
|
55
|
+
default: 0.9
|
56
|
+
|
57
|
+
option :critical,
|
58
|
+
short: '-c CONSUMER_UTILISATION',
|
59
|
+
long: '--critical CONSUMER_UTILISATION',
|
60
|
+
description: 'CRITICAL consumer utilisation threshold',
|
61
|
+
proc: proc(&:to_f),
|
62
|
+
default: 0.5
|
63
|
+
|
64
|
+
def queue_list_builder(input)
|
65
|
+
return [] if input.nil?
|
66
|
+
return [input] if config[:regex]
|
67
|
+
input.split(',')
|
68
|
+
end
|
69
|
+
|
70
|
+
def return_condition(missing, critical, warning)
|
71
|
+
if critical.count > 0 || missing.count > 0
|
72
|
+
message = []
|
73
|
+
message << "Queues in critical state: #{critical.join(', ')}. " if critical.count > 0
|
74
|
+
message << "Queues missing: #{missing.join(', ')}" if missing.count > 0
|
75
|
+
critical(message.join("\n"))
|
76
|
+
elsif warning.count > 0
|
77
|
+
warning("Queues in warning state: #{warning.join(', ')}")
|
78
|
+
else
|
79
|
+
ok
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def run
|
84
|
+
# create arrays to hold failures
|
85
|
+
queue_list = queue_list_builder(config[:queue])
|
86
|
+
exclude_list = queue_list_builder(config[:exclude])
|
87
|
+
missing = if config[:regex]
|
88
|
+
[]
|
89
|
+
else
|
90
|
+
queue_list || []
|
91
|
+
end
|
92
|
+
critical = []
|
93
|
+
warn = []
|
94
|
+
rabbitmq = acquire_rabbitmq_info
|
95
|
+
begin
|
96
|
+
rabbitmq.queues.each do |queue|
|
97
|
+
# if specific queues were passed only monitor those.
|
98
|
+
# if specific queues to exclude were passed then skip those
|
99
|
+
if config[:regex]
|
100
|
+
if config[:queue] && config[:exclude]
|
101
|
+
next unless queue['name'] =~ /#{queue_list.first}/ && queue['name'] !~ /#{exclude_list.first}/
|
102
|
+
else
|
103
|
+
next unless queue['name'] =~ /#{queue_list.first}/
|
104
|
+
end
|
105
|
+
elsif config[:queue]
|
106
|
+
next unless queue_list.include?(queue['name'])
|
107
|
+
elsif config[:exclude]
|
108
|
+
next if exclude_list.include?(queue['name'])
|
109
|
+
end
|
110
|
+
missing.delete(queue['name'])
|
111
|
+
consumer_util = queue['consumer_utilisation'] || 0
|
112
|
+
critical.push("#{queue['name']}:#{consumer_util.round(2) * 100}%") if consumer_util <= config[:critical]
|
113
|
+
warn.push("#{queue['name']}:#{consumer_util.round(2) * 100}%") if consumer_util <= config[:warn]
|
114
|
+
end
|
115
|
+
rescue StandardError
|
116
|
+
critical 'Could not find any queue, check rabbitmq server'
|
117
|
+
end
|
118
|
+
return_condition(missing, critical, warn)
|
119
|
+
end
|
120
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sensu-plugins-rabbitmq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.1.0
|
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: 2018-05-
|
11
|
+
date: 2018-05-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sensu-plugin
|
@@ -258,6 +258,7 @@ executables:
|
|
258
258
|
- check-rabbitmq-alive.rb
|
259
259
|
- check-rabbitmq-amqp-alive.rb
|
260
260
|
- check-rabbitmq-cluster-health.rb
|
261
|
+
- check-rabbitmq-consumer-utilisation.rb
|
261
262
|
- check-rabbitmq-consumers.rb
|
262
263
|
- check-rabbitmq-messages.rb
|
263
264
|
- check-rabbitmq-network-partitions.rb
|
@@ -279,6 +280,7 @@ files:
|
|
279
280
|
- bin/check-rabbitmq-alive.rb
|
280
281
|
- bin/check-rabbitmq-amqp-alive.rb
|
281
282
|
- bin/check-rabbitmq-cluster-health.rb
|
283
|
+
- bin/check-rabbitmq-consumer-utilisation.rb
|
282
284
|
- bin/check-rabbitmq-consumers.rb
|
283
285
|
- bin/check-rabbitmq-messages.rb
|
284
286
|
- bin/check-rabbitmq-network-partitions.rb
|