collective-metrics 0.1.4 → 0.1.5

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: 51ef245b62bef214e80e49a229a50306ff77103f
4
- data.tar.gz: 03123bc9e0411ee62856b2ebd08ac5c3da81bdf4
3
+ metadata.gz: 8b3b49dcb907693182c790ca003bb99a6def1c44
4
+ data.tar.gz: 4278d571b71de3944dc11520c9e5982156d88bef
5
5
  SHA512:
6
- metadata.gz: 057089712cd254ef21edc4fe49300fdd566793e81d50a3763ef2af1e70df69b401567892068a009de3bec627c80e145b5cb0a5b92f692549a147cad178e883c3
7
- data.tar.gz: 953cc0d8d1f99bd6c165737fed22a58ea8ff1eaf21a6fae222b3c194664ea4e10106e0a52874fad1d33ea0d551fec1f23fe4d69645868bea33e9d3498914d1d4
6
+ metadata.gz: e9c6f6961708da103efb07f9fd05f27d6c4bbf5ab7814b5e38c0757d39c54192e893e25380b7ce06597ddf9d6dad2232a003024c99ffb4307f6c17130fcf544c
7
+ data.tar.gz: d5da8e93fe533bafd4f949464c7dc7bfaa1981a0beb6aa650c01789d3dc8b6a557e3bb2ac54f70d012fd747926b1f7c1044ffb9d49bc385d19b6a7b628e005d1
data/README.md CHANGED
@@ -21,6 +21,7 @@ It includes collectors for the following:
21
21
  * Sidekiq
22
22
  * Redis
23
23
  * Memcached
24
+ * RabbitMQ (You need to have the management plugin enabled)
24
25
 
25
26
  ## Installation
26
27
 
@@ -37,7 +38,7 @@ Add a Collectfile:
37
38
  ```ruby
38
39
  use Collective::Collectors::Sidekiq
39
40
  use Collective::Collectors::Redis
40
- use Collective::Collectors::Redis, url: ENV['ROLLOUT_REDIS_URL']
41
+ use Collective::Collectors::RabbitMQ, url: ENV['RABBITMQ_MANAGEMENT_URL']
41
42
  ```
42
43
 
43
44
  Start the collectors.
data/collective.gemspec CHANGED
@@ -21,6 +21,8 @@ Gem::Specification.new do |spec|
21
21
  spec.add_dependency 'rufus-scheduler', '~> 2.0'
22
22
  spec.add_dependency 'thor', '~> 0.18'
23
23
  spec.add_dependency 'formatted-metrics', ['>= 0.2.1', '< 2.0']
24
+ spec.add_dependency 'faraday'
25
+ spec.add_dependency 'faraday_middleware'
24
26
 
25
27
  spec.add_development_dependency 'bundler', '~> 1.3'
26
28
  spec.add_development_dependency 'rake'
data/lib/collective.rb CHANGED
@@ -11,6 +11,7 @@ module Collective
11
11
  autoload :Sidekiq, 'collective/collectors/sidekiq'
12
12
  autoload :Redis, 'collective/collectors/redis'
13
13
  autoload :Memcached, 'collective/collectors/memcached'
14
+ autoload :RabbitMQ, 'collective/collectors/rabbitmq'
14
15
  end
15
16
 
16
17
  class << self
@@ -0,0 +1,67 @@
1
+ require 'pp'
2
+
3
+ module Collective::Collectors
4
+ class RabbitMQ < Collective::Collector
5
+ requires :faraday
6
+ requires :faraday_middleware
7
+ requires :json
8
+
9
+ collect do
10
+ instrument_overview
11
+ instrument_queues
12
+ end
13
+
14
+ private
15
+
16
+ def instrument_overview
17
+ overview = client.get('overview').body
18
+
19
+ group 'rabbitmq' do |group|
20
+ %w[message_stats object_totals queue_totals].each do |key|
21
+ group.group key do |group|
22
+ instrument_hash(group, overview[key])
23
+ end
24
+ end
25
+ end
26
+ end
27
+
28
+ def instrument_queues
29
+ queues = client.get('queues').body
30
+
31
+ group 'rabbitmq.queue' do |group|
32
+ queues.each do |queue|
33
+ instrument_hash(group, queue, source: "rabbitmq.queue.#{queue['name']}")
34
+ end
35
+ end
36
+ end
37
+
38
+ def instrument_hash(group, hash, options={})
39
+ hash.each do |key, val|
40
+ case val
41
+ when Hash
42
+ group.group key do |group|
43
+ instrument_hash(group, val, options)
44
+ end
45
+ else
46
+ group.instrument(key, val, options) if instrumentable?(val)
47
+ end
48
+ end
49
+ end
50
+
51
+ def instrumentable?(value)
52
+ Float(value) rescue nil
53
+ end
54
+
55
+ def client
56
+ @client ||= Faraday.new(url) do |builder|
57
+ builder.response :json, content_type: /\bjson$/
58
+ builder.adapter Faraday.default_adapter
59
+ end
60
+ end
61
+
62
+ def url
63
+ options[:url]
64
+ end
65
+
66
+ end
67
+ end
@@ -1,3 +1,3 @@
1
1
  module Collective
2
- VERSION = '0.1.4'
2
+ VERSION = '0.1.5'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: collective-metrics
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric J. Holmes
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-13 00:00:00.000000000 Z
11
+ date: 2013-12-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rufus-scheduler
@@ -58,6 +58,34 @@ dependencies:
58
58
  - - <
59
59
  - !ruby/object:Gem::Version
60
60
  version: '2.0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: faraday
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - '>='
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - '>='
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: faraday_middleware
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - '>='
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ type: :runtime
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
61
89
  - !ruby/object:Gem::Dependency
62
90
  name: bundler
63
91
  requirement: !ruby/object:Gem::Requirement
@@ -123,6 +151,7 @@ files:
123
151
  - lib/collective/collector.rb
124
152
  - lib/collective/collector/dsl.rb
125
153
  - lib/collective/collectors/memcached.rb
154
+ - lib/collective/collectors/rabbitmq.rb
126
155
  - lib/collective/collectors/redis.rb
127
156
  - lib/collective/collectors/sidekiq.rb
128
157
  - lib/collective/version.rb