sensu-plugins-rabbitmq 3.1.1 → 3.2.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 +8 -2
- data/README.md +1 -0
- data/bin/metrics-rabbitmq-exchange.rb +144 -0
- data/lib/sensu-plugins-rabbitmq/version.rb +2 -2
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b3566139d4b9ef5dce00928ee03a851735572fb0
|
4
|
+
data.tar.gz: 1e2b59c503c0e8fad702558068746944682500b5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 21f1f3fc7372c3e79b7241d6cb7fb7867b39822c75e57a11c807d559c00fb7a10e7e62a6f560fe7cbdd9c8c7c8799d386bb96ae0761ddad09d66b2c72cf43a59
|
7
|
+
data.tar.gz: 66ee9067f134abc57fa81206f52adc7173b7f1190a792b90dc9155631601d522edf0a8fd899c921e5c07cc8500b0ff51d20358a804c7861e08ae7ea7d618a78c
|
data/CHANGELOG.md
CHANGED
@@ -1,9 +1,14 @@
|
|
1
|
-
#Change Log
|
1
|
+
# Change Log
|
2
2
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
3
3
|
|
4
4
|
This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachangelog.com/)
|
5
5
|
|
6
6
|
## [Unreleased]
|
7
|
+
|
8
|
+
## [3.2.0] - 2017-06-20
|
9
|
+
### Added
|
10
|
+
- metrics-rabbitmq-exchange: new metrics for exchange, working similarly to queue metrics (@rthouvenin)
|
11
|
+
|
7
12
|
## [3.1.1] - 2017-05-17
|
8
13
|
### Fixed
|
9
14
|
- metrics-rabbitmq-queue.rb: Fix use of =~ operator
|
@@ -137,7 +142,8 @@ NOTE: this release changes the option flags in check-rabbitmq-node-health.rb to
|
|
137
142
|
- Remove copy paste errors in the Readme
|
138
143
|
- Removed Rubygems require Ruby 1.8.7 backwards compatibility from all plugins
|
139
144
|
|
140
|
-
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-rabbitmq/compare/3.
|
145
|
+
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-rabbitmq/compare/3.2.0...HEAD
|
146
|
+
[3.2.0]: https://github.com/sensu-plugins/sensu-plugins-rabbitmq/compare/3.1.1...3.2.0
|
141
147
|
[3.1.1]: https://github.com/sensu-plugins/sensu-plugins-rabbitmq/compare/3.1.0...3.1.1
|
142
148
|
[3.1.0]: https://github.com/sensu-plugins/sensu-plugins-rabbitmq/compare/3.0.0...3.1.0
|
143
149
|
[3.0.0]: https://github.com/sensu-plugins/sensu-plugins-rabbitmq/compare/2.3.0...3.0.0
|
data/README.md
CHANGED
@@ -0,0 +1,144 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: UTF-8
|
3
|
+
#
|
4
|
+
# RabbitMQ Exchange Metrics
|
5
|
+
# ===
|
6
|
+
#
|
7
|
+
# DESCRIPTION:
|
8
|
+
# This plugin gathers by default all the available exchange metrics.
|
9
|
+
# The list of gathered metrics can also be specified with an option
|
10
|
+
#
|
11
|
+
# Code mostly copied from metrics-rabbitmq-queue
|
12
|
+
#
|
13
|
+
# PLATFORMS:
|
14
|
+
# Linux, BSD, Solaris
|
15
|
+
#
|
16
|
+
# DEPENDENCIES:
|
17
|
+
# RabbitMQ rabbitmq_management plugin
|
18
|
+
# gem: sensu-plugin
|
19
|
+
# gem: carrot-top
|
20
|
+
#
|
21
|
+
# LICENSE:
|
22
|
+
# Copyright 2017 Romain Thouvenin <romain@thouvenin.pro>
|
23
|
+
#
|
24
|
+
# Released under the same terms as Sensu (the MIT license); see LICENSE
|
25
|
+
# for details.
|
26
|
+
|
27
|
+
require 'sensu-plugin/metric/cli'
|
28
|
+
require 'socket'
|
29
|
+
require 'carrot-top'
|
30
|
+
require 'inifile'
|
31
|
+
|
32
|
+
# main plugin class
|
33
|
+
class RabbitMQExchangeMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
34
|
+
option :host,
|
35
|
+
description: 'RabbitMQ management API host',
|
36
|
+
long: '--host HOST',
|
37
|
+
default: 'localhost'
|
38
|
+
|
39
|
+
option :port,
|
40
|
+
description: 'RabbitMQ management API port',
|
41
|
+
long: '--port PORT',
|
42
|
+
proc: proc(&:to_i),
|
43
|
+
default: 15_672
|
44
|
+
|
45
|
+
option :vhost,
|
46
|
+
description: 'Regular expression for filtering the RabbitMQ vhost',
|
47
|
+
short: '-v',
|
48
|
+
long: '--vhost VHOST'
|
49
|
+
|
50
|
+
option :username,
|
51
|
+
description: 'RabbitMQ management API user',
|
52
|
+
long: '--username USER',
|
53
|
+
default: 'guest'
|
54
|
+
|
55
|
+
option :password,
|
56
|
+
description: 'RabbitMQ management API password',
|
57
|
+
long: '--password PASSWORD',
|
58
|
+
default: 'guest'
|
59
|
+
|
60
|
+
option :scheme,
|
61
|
+
description: 'Metric naming scheme, text to prepend to $exchange_name.$metric',
|
62
|
+
long: '--scheme SCHEME',
|
63
|
+
default: "#{Socket.gethostname}.rabbitmq"
|
64
|
+
|
65
|
+
option :filter,
|
66
|
+
description: 'Regular expression for filtering exchanges',
|
67
|
+
long: '--filter REGEX'
|
68
|
+
|
69
|
+
option :metrics,
|
70
|
+
description: 'Regular expression for filtering metrics in each exchange',
|
71
|
+
long: '--metrics REGEX'
|
72
|
+
|
73
|
+
option :ssl,
|
74
|
+
description: 'Enable SSL for connection to the API',
|
75
|
+
long: '--ssl',
|
76
|
+
boolean: true,
|
77
|
+
default: false
|
78
|
+
|
79
|
+
option :ini,
|
80
|
+
description: 'Configuration ini file',
|
81
|
+
short: '-i',
|
82
|
+
long: '--ini VALUE'
|
83
|
+
|
84
|
+
def acquire_rabbitmq_exchanges
|
85
|
+
begin
|
86
|
+
if config[:ini]
|
87
|
+
ini = IniFile.load(config[:ini])
|
88
|
+
section = ini['auth']
|
89
|
+
username = section['username']
|
90
|
+
password = section['password']
|
91
|
+
else
|
92
|
+
username = config[:username]
|
93
|
+
password = config[:password]
|
94
|
+
end
|
95
|
+
|
96
|
+
rabbitmq_info = CarrotTop.new(
|
97
|
+
host: config[:host],
|
98
|
+
port: config[:port],
|
99
|
+
user: username,
|
100
|
+
password: password,
|
101
|
+
ssl: config[:ssl]
|
102
|
+
)
|
103
|
+
rescue
|
104
|
+
warning 'could not get rabbitmq exchange info'
|
105
|
+
end
|
106
|
+
|
107
|
+
if config[:vhost]
|
108
|
+
return rabbitmq_info.exchanges.select { |x| x['vhost'].match(config[:vhost]) }
|
109
|
+
end
|
110
|
+
|
111
|
+
rabbitmq_info.exchanges
|
112
|
+
end
|
113
|
+
|
114
|
+
def dotted_keys(hash, prefix = '', keys = [])
|
115
|
+
hash.each do |k, v|
|
116
|
+
if v.is_a? Hash
|
117
|
+
keys = dotted_keys(v, prefix + k + '.', keys)
|
118
|
+
else
|
119
|
+
keys << prefix + k
|
120
|
+
end
|
121
|
+
end
|
122
|
+
keys
|
123
|
+
end
|
124
|
+
|
125
|
+
def run
|
126
|
+
timestamp = Time.now.to_i
|
127
|
+
acquire_rabbitmq_exchanges.each do |exchange|
|
128
|
+
if config[:filter]
|
129
|
+
next unless exchange['name'].match(config[:filter])
|
130
|
+
end
|
131
|
+
|
132
|
+
metrics = dotted_keys(exchange)
|
133
|
+
metrics.each do |metric|
|
134
|
+
if config[:metrics]
|
135
|
+
next unless metric.match(config[:metrics])
|
136
|
+
end
|
137
|
+
value = exchange.dig(*metric.split('.'))
|
138
|
+
output("#{config[:scheme]}.#{exchange['name']}.#{metric}", value, timestamp) unless value.nil?
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
ok
|
143
|
+
end
|
144
|
+
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: 3.
|
4
|
+
version: 3.2.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: 2017-
|
11
|
+
date: 2017-06-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sensu-plugin
|
@@ -252,6 +252,7 @@ executables:
|
|
252
252
|
- check-rabbitmq-queue-drain-time.rb
|
253
253
|
- check-rabbitmq-queue.rb
|
254
254
|
- check-rabbitmq-stomp-alive.rb
|
255
|
+
- metrics-rabbitmq-exchange.rb
|
255
256
|
- metrics-rabbitmq-overview.rb
|
256
257
|
- metrics-rabbitmq-queue.rb
|
257
258
|
extensions: []
|
@@ -271,6 +272,7 @@ files:
|
|
271
272
|
- bin/check-rabbitmq-queue-drain-time.rb
|
272
273
|
- bin/check-rabbitmq-queue.rb
|
273
274
|
- bin/check-rabbitmq-stomp-alive.rb
|
275
|
+
- bin/metrics-rabbitmq-exchange.rb
|
274
276
|
- bin/metrics-rabbitmq-overview.rb
|
275
277
|
- bin/metrics-rabbitmq-queue.rb
|
276
278
|
- lib/sensu-plugins-rabbitmq.rb
|