sensu-plugins-rabbitmq 0.0.4 → 0.1.0

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
2
  SHA1:
3
- metadata.gz: e453079e56150f58af45491d21d5fc38916a205e
4
- data.tar.gz: f950b3fbdaa61d9713520e96b4e60e60d2f14b70
3
+ metadata.gz: fee6c8b3220c699cd8a25a9676c69366943abb4d
4
+ data.tar.gz: 7bc4d69c6d6b22a82246ae61263cb1ea8891127e
5
5
  SHA512:
6
- metadata.gz: 1e172378beaff9e5b61f3c53acc4a24b6d508b749d549a797d2f60b20e3b0f9a5397a8771597a05b62f249606bfe9806891e3c7b2594b6da4deb69fbc4b3d75b
7
- data.tar.gz: c093475fb6f88de2ed3c8364c5f39b833a24a1764ad6014c20fd5bceb2d41437c5c7f73f1bdc3807b1566a54bab62dad9a799858c2ec4d78c41fbe457ab88e33
6
+ metadata.gz: 13ea436d73f3fdb68befca4cf75b4ccf0d7a759f6027de5d587cb65b878814443d19f208b0d71ee3c610f0b5dcf9019f645a742b5912bedd50c11ce989e9a126
7
+ data.tar.gz: f3f9f75506bc3eacffd21e1f09e3758c7993236232af5f4a5c388c934064182e06604e5db6d3d98786a38c11326571f00b3a766a084bf274a468927e51960c55
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -5,7 +5,19 @@ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachang
5
5
 
6
6
  ## Unreleased
7
7
 
8
- ## [0.0.3] - 2015-08-18
8
+ ## [0.1.0] - 2015-11-19
9
+ ### Changed
10
+ - Upgrade to rubocop 0.32.1 and cleanup
11
+
12
+ ### Added
13
+ - check-rabbitmq-queue.rb: Added option to ignore non-existent queues
14
+ - check-rabbitmq-queue.rb: Added vhost support
15
+ - Added SSL support to check-rabbitmq-cluster-health.rb and check-rabbitmq-node-health.rb
16
+
17
+ ### Fixed
18
+ - metrics-rabbitmq-queue.rb: Fix error when queue['messages'] is missing
19
+
20
+ ## [0.0.4] - 2015-08-18
9
21
  ### Changed
10
22
  - pinned amq-protocol
11
23
 
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ## Sensu-Plugins-rabbitmq
2
2
 
3
- [ ![Build Status](https://travis-ci.org/sensu-plugins/sensu-plugins-rabbitmq.svg?branch=master)](https://travis-ci.org/sensu-plugins/sensu-plugins-rabbitmq)
3
+ [![Build Status](https://travis-ci.org/sensu-plugins/sensu-plugins-rabbitmq.svg?branch=master)](https://travis-ci.org/sensu-plugins/sensu-plugins-rabbitmq)
4
4
  [![Gem Version](https://badge.fury.io/rb/sensu-plugins-rabbitmq.svg)](http://badge.fury.io/rb/sensu-plugins-rabbitmq)
5
5
  [![Code Climate](https://codeclimate.com/github/sensu-plugins/sensu-plugins-rabbitmq/badges/gpa.svg)](https://codeclimate.com/github/sensu-plugins/sensu-plugins-rabbitmq)
6
6
  [![Test Coverage](https://codeclimate.com/github/sensu-plugins/sensu-plugins-rabbitmq/badges/coverage.svg)](https://codeclimate.com/github/sensu-plugins/sensu-plugins-rabbitmq)
@@ -27,6 +27,6 @@
27
27
 
28
28
  ## Installation
29
29
 
30
- [Installation and Setup](https://github.com/sensu-plugins/documentation/blob/master/user_docs/installation_instructions.md)
30
+ [Installation and Setup](http://sensu-plugins.io/docs/installation_instructions.html)
31
31
 
32
32
  ## Notes
@@ -61,6 +61,12 @@ class CheckRabbitMQCluster < Sensu::Plugin::Check::CLI
61
61
  long: '--nodes NODE1,NODE2',
62
62
  default: ''
63
63
 
64
+ option :ssl,
65
+ description: 'Enable SSL for connection to the API',
66
+ long: '--ssl',
67
+ boolean: true,
68
+ default: false
69
+
64
70
  def run
65
71
  res = cluster_healthy?
66
72
 
@@ -93,10 +99,12 @@ class CheckRabbitMQCluster < Sensu::Plugin::Check::CLI
93
99
  port = config[:port]
94
100
  username = config[:username]
95
101
  password = config[:password]
96
- nodes = config[:nodes].split(',')
102
+ ssl = config[:ssl]
103
+ nodes = config[:nodes].split(',')
97
104
 
98
105
  begin
99
- resource = RestClient::Resource.new "http://#{host}:#{port}/api/nodes", username, password
106
+ ssl ? url_prefix = 'https' : url_prefix = 'http'
107
+ resource = RestClient::Resource.new "#{url_prefix}://#{host}:#{port}/api/nodes", username, password
100
108
  # create a hash of the server names and their running state
101
109
  servers_status = Hash[JSON.parse(resource.get).map { |server| [server['name'], server['running']] }]
102
110
 
@@ -113,7 +121,7 @@ class CheckRabbitMQCluster < Sensu::Plugin::Check::CLI
113
121
  else
114
122
  message = "#{failed_nodes.count} failed cluster node: #{failed_nodes.sort.join(',')}"
115
123
  end
116
- message.prepend("#{missing_nodes.count } node(s) not found: #{missing_nodes.join(',')}. ") unless missing_nodes.empty?
124
+ message.prepend("#{missing_nodes.count} node(s) not found: #{missing_nodes.join(',')}. ") unless missing_nodes.empty?
117
125
  { 'status' => status, 'message' => message }
118
126
  rescue Errno::ECONNREFUSED => e
119
127
  { 'status' => 'critical', 'message' => e.message }
@@ -80,7 +80,7 @@ class CheckRabbitMQMessages < Sensu::Plugin::Check::CLI
80
80
  default: []
81
81
 
82
82
  def generate_message(status_hash)
83
- message = []
83
+ message = []
84
84
  status_hash.each_pair do |k, v|
85
85
  message << "#{k}: #{v}"
86
86
  end
@@ -111,8 +111,15 @@ class CheckRabbitMQMessages < Sensu::Plugin::Check::CLI
111
111
  crit_queues = {}
112
112
  rabbitmq.queues.each do |queue|
113
113
  next if config[:excluded].include?(queue['name'])
114
- (crit_queues["#{queue['name']}"] = queue['messages']; next) if queue['messages'] >= config[:critical].to_i # rubocop: disable Style/Semicolon
115
- (warn_queues["#{queue['name']}"] = queue['messages']; next) if queue['messages'] >= config[:warn].to_i # rubocop: disable Style/Semicolon
114
+ queue['messages'] ||= 0
115
+ if queue['messages'] >= config[:critical].to_i
116
+ crit_queues["#{queue['name']}"] = queue['messages']
117
+ next
118
+ end
119
+ if queue['messages'] >= config[:warn].to_i
120
+ warn_queues["#{queue['name']}"] = queue['messages']
121
+ next
122
+ end
116
123
  end
117
124
  message crit_queues.empty? ? generate_message(warn_queues) : generate_message(crit_queues)
118
125
  critical unless crit_queues.empty?
@@ -55,6 +55,12 @@ class CheckRabbitMQNodeHealth < Sensu::Plugin::Check::CLI
55
55
  long: '--port PORT',
56
56
  default: '15672'
57
57
 
58
+ option :ssl,
59
+ description: 'Enable SSL for connection to the API',
60
+ long: '--ssl',
61
+ boolean: true,
62
+ default: false
63
+
58
64
  option :memwarn,
59
65
  description: 'Warning % of mem usage vs high watermark',
60
66
  short: '-m',
@@ -122,9 +128,11 @@ class CheckRabbitMQNodeHealth < Sensu::Plugin::Check::CLI
122
128
  port = config[:port]
123
129
  username = config[:username]
124
130
  password = config[:password]
131
+ ssl = config[:ssl]
125
132
 
126
133
  begin
127
- resource = RestClient::Resource.new "http://#{host}:#{port}/api/nodes", username, password
134
+ ssl ? url_prefix = 'https' : url_prefix = 'http'
135
+ resource = RestClient::Resource.new "#{url_prefix}://#{host}:#{port}/api/nodes", username, password
128
136
  # Parse our json data
129
137
  nodeinfo = JSON.parse(resource.get)[0]
130
138
 
@@ -103,7 +103,7 @@ class CheckRabbitMQQueueDrainTime < Sensu::Plugin::Check::CLI
103
103
 
104
104
  # handle rate of zero which is an infinite time until empty
105
105
  if queue['backing_queue_status']['avg_egress_rate'].to_f == 0
106
- crit_queues[queue['name']] = 'Infinite (drain rate = 0)'
106
+ crit_queues[queue['name']] = 'Infinite (drain rate = 0)'
107
107
  next
108
108
  end
109
109
 
@@ -38,6 +38,12 @@ class CheckRabbitMQMessages < Sensu::Plugin::Check::CLI
38
38
  proc: proc(&:to_i),
39
39
  default: 15_672
40
40
 
41
+ option :vhost,
42
+ description: 'RabbitMQ vhost',
43
+ short: '-v',
44
+ long: '--vhost VHOST',
45
+ default: '%2F'
46
+
41
47
  option :ssl,
42
48
  description: 'Enable SSL for connection to the API',
43
49
  long: '--ssl',
@@ -72,6 +78,12 @@ class CheckRabbitMQMessages < Sensu::Plugin::Check::CLI
72
78
  description: 'CRITICAL message count threshold',
73
79
  default: 500
74
80
 
81
+ option :ignore,
82
+ description: 'Ignore non-existent queues',
83
+ long: '--ignore',
84
+ boolean: true,
85
+ default: false
86
+
75
87
  def acquire_rabbitmq_info
76
88
  begin
77
89
  rabbitmq_info = CarrotTop.new(
@@ -91,10 +103,12 @@ class CheckRabbitMQMessages < Sensu::Plugin::Check::CLI
91
103
  @crit = []
92
104
  @warn = []
93
105
  rabbitmq = acquire_rabbitmq_info
94
- queues = rabbitmq.queues
106
+ queues = rabbitmq.method_missing('/queues/' + config[:vhost])
95
107
  config[:queue].each do |q|
96
108
  unless queues.map { |hash| hash['name'] }.include? q
97
- @warn << "Queue #{ q } not available"
109
+ unless config[:ignore]
110
+ @warn << "Queue #{q} not available"
111
+ end
98
112
  next
99
113
  end
100
114
  queues.each do |queue|
@@ -102,16 +116,16 @@ class CheckRabbitMQMessages < Sensu::Plugin::Check::CLI
102
116
  total = queue['messages']
103
117
  total = 0 if total.nil?
104
118
  message "#{total}"
105
- @crit << "#{ q }:#{ total }" if total > config[:critical].to_i
106
- @warn << "#{ q }:#{ total }" if total > config[:warn].to_i
119
+ @crit << "#{q}:#{total}" if total > config[:critical].to_i
120
+ @warn << "#{q}:#{total}" if total > config[:warn].to_i
107
121
  end
108
122
  end
109
123
  if @crit.empty? && @warn.empty?
110
124
  ok
111
125
  elsif !(@crit.empty?)
112
- critical "critical: #{ @crit } warning: #{ @warn }"
126
+ critical "critical: #{@crit} warning: #{@warn}"
113
127
  elsif !(@warn.empty?)
114
- warning "critical: #{ @crit } warning: #{ @warn }"
128
+ warning "critical: #{@crit} warning: #{@warn}"
115
129
  end
116
130
  end
117
131
  end
@@ -98,10 +98,10 @@ class CheckRabbitStomp < Sensu::Plugin::Check::CLI
98
98
  conn.subscribe("/queue/#{config[:queue]}") do |_msg|
99
99
  end
100
100
  { 'status' => 'ok', 'message' => 'RabbitMQ server is alive' }
101
- rescue Errno::ECONNREFUSED
102
- { 'status' => 'critical', 'message' => 'TCP connection refused' }
103
- rescue Stomp::Error::BrokerException => e
104
- { 'status' => 'critical', 'message' => "Error from broker. Check auth details? #{e.message}" }
101
+ rescue Errno::ECONNREFUSED
102
+ { 'status' => 'critical', 'message' => 'TCP connection refused' }
103
+ rescue Stomp::Error::BrokerException => e
104
+ { 'status' => 'critical', 'message' => "Error from broker. Check auth details? #{e.message}" }
105
105
  rescue => e
106
106
  { 'status' => 'unknown', 'message' => "#{e.class}: #{e.message}" }
107
107
  end
@@ -91,8 +91,9 @@ class RabbitMQMetrics < Sensu::Plugin::Metric::CLI::Graphite
91
91
  end
92
92
 
93
93
  # calculate and output time till the queue is drained in drain metrics
94
+ queue['messages'] ||= 0
94
95
  drain_time = queue['messages'] / queue['backing_queue_status']['avg_egress_rate']
95
- drain_time = 0 if drain_time.nan? # 0 rate with 0 messages is 0 time to drain
96
+ drain_time = 0 if drain_time.nan? || drain_time.infinite? # 0 rate with 0 messages is 0 time to drain
96
97
  output([config[:scheme], queue['name'], 'drain_time'].join('.'), drain_time.to_i, timestamp)
97
98
 
98
99
  %w(messages consumers).each do |metric|
@@ -1,8 +1,8 @@
1
1
  module SensuPluginsRabbitMQ
2
2
  module Version
3
3
  MAJOR = 0
4
- MINOR = 0
5
- PATCH = 4
4
+ MINOR = 1
5
+ PATCH = 0
6
6
 
7
7
  VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
8
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-rabbitmq
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sensu-Plugins and contributors
@@ -30,7 +30,7 @@ cert_chain:
30
30
  8sHuVruarogxxKPBzlL2is4EUb6oN/RdpGx2l4254+nyR+abg//Ed27Ym0PkB4lk
31
31
  HP0m8WSjZmFr109pE/sVsM5jtOCvogyujQOjNVGN4gz1wwPr
32
32
  -----END CERTIFICATE-----
33
- date: 2015-08-18 00:00:00.000000000 Z
33
+ date: 2015-11-20 00:00:00.000000000 Z
34
34
  dependencies:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: sensu-plugin
@@ -136,14 +136,14 @@ dependencies:
136
136
  requirements:
137
137
  - - '='
138
138
  - !ruby/object:Gem::Version
139
- version: '0.30'
139
+ version: 0.32.1
140
140
  type: :development
141
141
  prerelease: false
142
142
  version_requirements: !ruby/object:Gem::Requirement
143
143
  requirements:
144
144
  - - '='
145
145
  - !ruby/object:Gem::Version
146
- version: '0.30'
146
+ version: 0.32.1
147
147
  - !ruby/object:Gem::Dependency
148
148
  name: rspec
149
149
  requirement: !ruby/object:Gem::Requirement
@@ -242,7 +242,11 @@ dependencies:
242
242
  - - "~>"
243
243
  - !ruby/object:Gem::Version
244
244
  version: '0.10'
245
- description: Sensu plugins for rabbitmq
245
+ description: |-
246
+ This plugin provides native RabbitMQ instrumentation
247
+ for monitoring and metrics collection, including:
248
+ service health, message, consumer, and queue health/metrics
249
+ via `rabbitmq_management`, and more
246
250
  email: "<sensu-users@googlegroups.com>"
247
251
  executables:
248
252
  - metrics-rabbitmq-queue.rb
metadata.gz.sig CHANGED
@@ -1 +1 @@
1
- ��˱&�l��vW����1���D��% ��}�'�<֖��19MJ]r��uL*����4��&�s��m��CR���~��~�?��D��'��2ejK'�{�}{�@�LZ����W\a�������������n�8�h���?�l}�U/�Y~Jӟd��~R���v�������k��Ls65E��ըe����.��j�gN;�.�d��r.�d>\Js^yB�
1
+ ��إ�Fys:�\���@�P@`k����@��aJWe:`���U��0~��:A��7�i4�'g�^��[o���e�^Se��-^#ݚR��p����UW�� �w~�ᇄN�g�| ylԊu��{qR/�A���܎�u1 ��NsIS{����o))����x&��&Cۇ�w'bĈ�0]m��떠{��"wk��Y�Y~t��2S�����]4\�z=��w s*N�L+r��*M ��FL��b�;q