collective-metrics 0.1.4 → 0.1.5

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 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