sensu-plugins-rabbitmq-temp 1.4.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 +7 -0
- data/CHANGELOG.md +102 -0
- data/LICENSE +22 -0
- data/README.md +31 -0
- data/bin/check-rabbitmq-alive.rb +109 -0
- data/bin/check-rabbitmq-amqp-alive.rb +119 -0
- data/bin/check-rabbitmq-cluster-health.rb +155 -0
- data/bin/check-rabbitmq-consumers.rb +131 -0
- data/bin/check-rabbitmq-messages.rb +135 -0
- data/bin/check-rabbitmq-network-partitions.rb +82 -0
- data/bin/check-rabbitmq-node-health.rb +204 -0
- data/bin/check-rabbitmq-queue-drain-time.rb +138 -0
- data/bin/check-rabbitmq-queue.rb +131 -0
- data/bin/check-rabbitmq-stomp-alive.rb +109 -0
- data/bin/metrics-rabbitmq-overview.rb +142 -0
- data/bin/metrics-rabbitmq-queue.rb +119 -0
- data/lib/sensu-plugins-rabbitmq.rb +1 -0
- data/lib/sensu-plugins-rabbitmq/version.rb +9 -0
- metadata +306 -0
@@ -0,0 +1,119 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: UTF-8
|
3
|
+
#
|
4
|
+
# RabbitMQ Queue Metrics
|
5
|
+
# ===
|
6
|
+
#
|
7
|
+
# DESCRIPTION:
|
8
|
+
# This plugin checks gathers the following per queue rabbitmq metrics:
|
9
|
+
# - message count
|
10
|
+
# - average egress rate
|
11
|
+
# - "drain time" metric, which is the time a queue will take to reach 0 based on the egress rate
|
12
|
+
# - consumer count
|
13
|
+
#
|
14
|
+
# PLATFORMS:
|
15
|
+
# Linux, BSD, Solaris
|
16
|
+
#
|
17
|
+
# DEPENDENCIES:
|
18
|
+
# RabbitMQ rabbitmq_management plugin
|
19
|
+
# gem: sensu-plugin
|
20
|
+
# gem: carrot-top
|
21
|
+
#
|
22
|
+
# LICENSE:
|
23
|
+
# Copyright 2011 Sonian, Inc <chefs@sonian.net>
|
24
|
+
# Copyright 2015 Tim Smith <tim@cozy.co> and Cozy Services Ltd.
|
25
|
+
#
|
26
|
+
# Released under the same terms as Sensu (the MIT license); see LICENSE
|
27
|
+
# for details.
|
28
|
+
|
29
|
+
require 'sensu-plugin/metric/cli'
|
30
|
+
require 'socket'
|
31
|
+
require 'carrot-top'
|
32
|
+
|
33
|
+
# main plugin class
|
34
|
+
class RabbitMQMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
35
|
+
option :host,
|
36
|
+
description: 'RabbitMQ management API host',
|
37
|
+
long: '--host HOST',
|
38
|
+
default: 'localhost'
|
39
|
+
|
40
|
+
option :port,
|
41
|
+
description: 'RabbitMQ management API port',
|
42
|
+
long: '--port PORT',
|
43
|
+
proc: proc(&:to_i),
|
44
|
+
default: 15_672
|
45
|
+
|
46
|
+
option :vhost,
|
47
|
+
description: 'Regular expression for filtering the RabbitMQ vhost',
|
48
|
+
short: '-v',
|
49
|
+
long: '--vhost VHOST'
|
50
|
+
|
51
|
+
option :user,
|
52
|
+
description: 'RabbitMQ management API user',
|
53
|
+
long: '--user USER',
|
54
|
+
default: 'guest'
|
55
|
+
|
56
|
+
option :password,
|
57
|
+
description: 'RabbitMQ management API password',
|
58
|
+
long: '--password PASSWORD',
|
59
|
+
default: 'guest'
|
60
|
+
|
61
|
+
option :scheme,
|
62
|
+
description: 'Metric naming scheme, text to prepend to $queue_name.$metric',
|
63
|
+
long: '--scheme SCHEME',
|
64
|
+
default: "#{Socket.gethostname}.rabbitmq"
|
65
|
+
|
66
|
+
option :filter,
|
67
|
+
description: 'Regular expression for filtering queues',
|
68
|
+
long: '--filter REGEX'
|
69
|
+
|
70
|
+
option :ssl,
|
71
|
+
description: 'Enable SSL for connection to the API',
|
72
|
+
long: '--ssl',
|
73
|
+
boolean: true,
|
74
|
+
default: false
|
75
|
+
|
76
|
+
def acquire_rabbitmq_queues
|
77
|
+
begin
|
78
|
+
rabbitmq_info = CarrotTop.new(
|
79
|
+
host: config[:host],
|
80
|
+
port: config[:port],
|
81
|
+
user: config[:user],
|
82
|
+
password: config[:password],
|
83
|
+
ssl: config[:ssl]
|
84
|
+
)
|
85
|
+
rescue
|
86
|
+
warning 'could not get rabbitmq queue info'
|
87
|
+
end
|
88
|
+
|
89
|
+
if config[:vhost]
|
90
|
+
return rabbitmq_info.queues.select { |x| x['vhost'].match(config[:vhost]) }
|
91
|
+
end
|
92
|
+
|
93
|
+
rabbitmq_info.queues
|
94
|
+
end
|
95
|
+
|
96
|
+
def run
|
97
|
+
timestamp = Time.now.to_i
|
98
|
+
acquire_rabbitmq_queues.each do |queue|
|
99
|
+
if config[:filter]
|
100
|
+
next unless queue['name'].match(config[:filter])
|
101
|
+
end
|
102
|
+
|
103
|
+
# calculate and output time till the queue is drained in drain metrics
|
104
|
+
queue['messages'] ||= 0
|
105
|
+
drain_time = queue['messages'] / queue['backing_queue_status']['avg_egress_rate']
|
106
|
+
drain_time = 0 if drain_time.nan? || drain_time.infinite? # 0 rate with 0 messages is 0 time to drain
|
107
|
+
output([config[:scheme], queue['name'], 'drain_time'].join('.'), drain_time.to_i, timestamp)
|
108
|
+
|
109
|
+
%w(messages consumers).each do |metric|
|
110
|
+
output([config[:scheme], queue['name'], metric].join('.'), queue[metric], timestamp)
|
111
|
+
end
|
112
|
+
|
113
|
+
# fetch the average egress rate of the queue
|
114
|
+
rate = format('%.4f', queue['backing_queue_status']['avg_egress_rate'])
|
115
|
+
output([config[:scheme], queue['name'], 'avg_egress_rate'].join('.'), rate, timestamp)
|
116
|
+
end
|
117
|
+
ok
|
118
|
+
end
|
119
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'sensu-plugins-rabbitmq/version'
|
metadata
ADDED
@@ -0,0 +1,306 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sensu-plugins-rabbitmq-temp
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.4.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Sensu-Plugins and contributors
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-07-25 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: carrot-top
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.0.7
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.0.7
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: stomp
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.3.4
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.3.4
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rest-client
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.8.0
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 1.8.0
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: bunny
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 2.5.0
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 2.5.0
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: amq-protocol
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 2.0.1
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 2.0.1
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: bundler
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '1.7'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '1.7'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: codeclimate-test-reporter
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0.4'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0.4'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: github-markup
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '1.3'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '1.3'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: pry
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0.10'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0.10'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: rake
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '10.5'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '10.5'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: redcarpet
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - "~>"
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '3.2'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - "~>"
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '3.2'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: rubocop
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - "~>"
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: 0.40.0
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - "~>"
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: 0.40.0
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: rspec
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - "~>"
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: '3.4'
|
202
|
+
type: :development
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - "~>"
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '3.4'
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: yard
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - "~>"
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: '0.8'
|
216
|
+
type: :development
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - "~>"
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: '0.8'
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
name: json
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
226
|
+
requirements:
|
227
|
+
- - "~>"
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: 2.0.1
|
230
|
+
type: :development
|
231
|
+
prerelease: false
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
requirements:
|
234
|
+
- - "~>"
|
235
|
+
- !ruby/object:Gem::Version
|
236
|
+
version: 2.0.1
|
237
|
+
description: |-
|
238
|
+
This plugin provides native RabbitMQ instrumentation
|
239
|
+
for monitoring and metrics collection, including:
|
240
|
+
service health, message, consumer, and queue health/metrics
|
241
|
+
via `rabbitmq_management`, and more
|
242
|
+
email: "<sensu-users@googlegroups.com>"
|
243
|
+
executables:
|
244
|
+
- check-rabbitmq-alive.rb
|
245
|
+
- check-rabbitmq-amqp-alive.rb
|
246
|
+
- check-rabbitmq-cluster-health.rb
|
247
|
+
- check-rabbitmq-consumers.rb
|
248
|
+
- check-rabbitmq-messages.rb
|
249
|
+
- check-rabbitmq-network-partitions.rb
|
250
|
+
- check-rabbitmq-node-health.rb
|
251
|
+
- check-rabbitmq-queue-drain-time.rb
|
252
|
+
- check-rabbitmq-queue.rb
|
253
|
+
- check-rabbitmq-stomp-alive.rb
|
254
|
+
- metrics-rabbitmq-overview.rb
|
255
|
+
- metrics-rabbitmq-queue.rb
|
256
|
+
extensions: []
|
257
|
+
extra_rdoc_files: []
|
258
|
+
files:
|
259
|
+
- CHANGELOG.md
|
260
|
+
- LICENSE
|
261
|
+
- README.md
|
262
|
+
- bin/check-rabbitmq-alive.rb
|
263
|
+
- bin/check-rabbitmq-amqp-alive.rb
|
264
|
+
- bin/check-rabbitmq-cluster-health.rb
|
265
|
+
- bin/check-rabbitmq-consumers.rb
|
266
|
+
- bin/check-rabbitmq-messages.rb
|
267
|
+
- bin/check-rabbitmq-network-partitions.rb
|
268
|
+
- bin/check-rabbitmq-node-health.rb
|
269
|
+
- bin/check-rabbitmq-queue-drain-time.rb
|
270
|
+
- bin/check-rabbitmq-queue.rb
|
271
|
+
- bin/check-rabbitmq-stomp-alive.rb
|
272
|
+
- bin/metrics-rabbitmq-overview.rb
|
273
|
+
- bin/metrics-rabbitmq-queue.rb
|
274
|
+
- lib/sensu-plugins-rabbitmq.rb
|
275
|
+
- lib/sensu-plugins-rabbitmq/version.rb
|
276
|
+
homepage: https://github.com/EslamElHusseiny/sensu-plugins-rabbitmq
|
277
|
+
licenses:
|
278
|
+
- MIT
|
279
|
+
metadata:
|
280
|
+
maintainer: "@mattyjones"
|
281
|
+
development_status: active
|
282
|
+
production_status: unstable - testing recommended
|
283
|
+
release_draft: 'false'
|
284
|
+
release_prerelease: 'false'
|
285
|
+
post_install_message: You can use the embedded Ruby by setting EMBEDDED_RUBY=true
|
286
|
+
in /etc/default/sensu
|
287
|
+
rdoc_options: []
|
288
|
+
require_paths:
|
289
|
+
- lib
|
290
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
291
|
+
requirements:
|
292
|
+
- - ">="
|
293
|
+
- !ruby/object:Gem::Version
|
294
|
+
version: 2.0.0
|
295
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
296
|
+
requirements:
|
297
|
+
- - ">="
|
298
|
+
- !ruby/object:Gem::Version
|
299
|
+
version: '0'
|
300
|
+
requirements: []
|
301
|
+
rubyforge_project:
|
302
|
+
rubygems_version: 2.5.1
|
303
|
+
signing_key:
|
304
|
+
specification_version: 4
|
305
|
+
summary: Sensu plugins for rabbitmq
|
306
|
+
test_files: []
|