riemann-smith 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/bin/queue-lengths +65 -0
  3. metadata +6 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6da5ba98f3d4f25cd285477aac6f54cf3f70881d
4
- data.tar.gz: 18a937f08c2deed7cc3aa7313f4a4297054a5acf
3
+ metadata.gz: ddabc131163b71844a1d0252bd9f5eecf18e06c0
4
+ data.tar.gz: 6f9b585f1491efdfe0d4f766893451506842ae12
5
5
  SHA512:
6
- metadata.gz: 48c154b75ff5fc4d8ce4f6037ad9a5399187cb584327f99f732859acda9032a188564ff36a8ccbf91e3a7c7b7d2592a70817db80c8865369938c8fe6265780c3
7
- data.tar.gz: 71b3260dfc5dd172502dd3b5d4b75702cd35537768e4a2e2282411c35060dcb84e0dade2015616f38b547f3ead4f8daf28c10d4f517a6e1c43d8de2c92849422
6
+ metadata.gz: ac33d63cb456c2a4a22e9ce616e04e4551f58220d9c7c6f4b79e386e06fa64c1fa443181abc860b81b7b5e99411192ecd061b37a859fd2df2a4adb75545aaa37
7
+ data.tar.gz: 49a96af674fc7fa8133abd16477d7c8c37bf11e4edaf18df7447382178472ef721d0448550bd6eb6849a26a09804de8de8404c6d74f69e9721eacdc5cef39174
data/bin/queue-lengths ADDED
@@ -0,0 +1,65 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "pp"
4
+ require "pathname"
5
+
6
+ require "rabbitmq/http/client"
7
+ require 'riemann/tools'
8
+
9
+ class QueueLength
10
+ include Riemann::Tools
11
+
12
+ opt :limits, "JSON file containing queue:limit key value pairs", :type => :string, :required => true
13
+ opt :queue_prefix, "Queue prefix", :type => :string, :default => "smith"
14
+ opt :exclusion_regex, "Exclude queue names that conform to the regex", :type => :string
15
+ opt :exclusions, "Exclude the given queue names.", :type => :string
16
+
17
+ def initialize
18
+ @rabbitmq = RabbitMQ::HTTP::Client.new("http://guest:guest@localhost:15672")
19
+ end
20
+
21
+ def tick
22
+ @rabbitmq.list_queues.each do |queue|
23
+ over_limit(queue)
24
+ end
25
+ end
26
+
27
+ private
28
+
29
+ def over_limit(queue)
30
+ alert(queue, state(queue), queue.messages, "Number of messages")
31
+ end
32
+
33
+ def state(queue)
34
+ if queue.messages > limit(queue)['critical']
35
+ state = :critial
36
+ elsif queue.messages > limit(queue)['warning']
37
+ state = :warning
38
+ else
39
+ state = :ok
40
+ end
41
+ end
42
+
43
+ def alert(queue, state, metric, description)
44
+ report(
45
+ :service => normliased_queue_name(queue),
46
+ :state => state.to_s,
47
+ :metric => metric.to_f,
48
+ :description => description
49
+ )
50
+ end
51
+
52
+ def limit(queue)
53
+ (limits[normliased_queue_name(queue)] || limits['default'])
54
+ end
55
+
56
+ def normliased_queue_name(queue)
57
+ queue.name.sub(Regexp.new("#{opts[:queue_prefix]}."), '')
58
+ end
59
+
60
+ def limits
61
+ @limits ||= MultiJson.load(Pathname.new(opts[:limits]))
62
+ end
63
+ end
64
+
65
+ QueueLength.run
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: riemann-smith
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Heycock
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-11 00:00:00.000000000 Z
11
+ date: 2014-12-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: git-version-bump
@@ -124,10 +124,13 @@ dependencies:
124
124
  version: '0'
125
125
  description:
126
126
  email: rgh@digivizer.com
127
- executables: []
127
+ executables:
128
+ - queue-lengths
129
+ - riemann-smith
128
130
  extensions: []
129
131
  extra_rdoc_files: []
130
132
  files:
133
+ - bin/queue-lengths
131
134
  - bin/riemann-smith
132
135
  - doc/LICENSE
133
136
  - doc/README