librato-rails 0.4.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. data/README.md +3 -1
  2. data/lib/librato/rails/aggregator.rb +11 -2
  3. data/lib/librato/rails/subscribers.rb +4 -4
  4. data/lib/librato/rails/version.rb +1 -1
  5. data/lib/librato/rails.rb +6 -5
  6. data/test/dummy/db/development.sqlite3 +0 -0
  7. data/test/dummy/db/test.sqlite3 +0 -0
  8. data/test/dummy/log/development.log +2189 -0
  9. data/test/dummy/log/test.log +5250 -0
  10. data/test/dummy/test_env.sh +2 -0
  11. data/test/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
  12. data/test/dummy/tmp/cache/assets/CDF/870/sprockets%2Fb878faf942403e313a5b103e5d80488e +0 -0
  13. data/test/dummy/tmp/cache/assets/CE8/7E0/sprockets%2F178e2a1f9aa891d473009c7f3095df28 +0 -0
  14. data/test/dummy/tmp/cache/assets/CF9/7C0/sprockets%2F40fc2f3d2a468a00e463f1d313cb1683 +0 -0
  15. data/test/dummy/tmp/cache/assets/D04/890/sprockets%2F587335c079eef8d5a63784fc8f99905a +0 -0
  16. data/test/dummy/tmp/cache/assets/D05/D40/sprockets%2F1c9faaf28d05409b88ad3113374d613c +0 -0
  17. data/test/dummy/tmp/cache/assets/D11/D90/sprockets%2Ff688bee5b15ad322749fd06432065df2 +0 -0
  18. data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
  19. data/test/dummy/tmp/cache/assets/D48/6E0/sprockets%2F3d5dd928c45756c99bb1018cdbba7485 +0 -0
  20. data/test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
  21. data/test/dummy/tmp/cache/assets/D4F/000/sprockets%2F25e44896aac12384727e9dab827ebef9 +0 -0
  22. data/test/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
  23. data/test/dummy/tmp/cache/assets/D66/890/sprockets%2F789354d3ec91e1ba6c8e92878d8f6ff8 +0 -0
  24. data/test/dummy/tmp/cache/assets/D84/000/sprockets%2F2ed60caa8412eb8334fe327cab12cb32 +0 -0
  25. data/test/dummy/tmp/cache/assets/D8B/F90/sprockets%2Ffe6ce696e9141eb755d8eed79128e17c +0 -0
  26. data/test/dummy/tmp/cache/assets/D98/8B0/sprockets%2Fedbef6e0d0a4742346cf479f2c522eb0 +0 -0
  27. data/test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
  28. data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  29. data/test/fixtures/config/librato.yml +1 -0
  30. data/test/integration/mail_test.rb +1 -3
  31. data/test/integration/request_test.rb +14 -18
  32. data/test/integration/sql_test.rb +8 -10
  33. data/test/metrics-rails_test.rb +5 -0
  34. data/test/unit/aggregator_test.rb +29 -6
  35. data/test/unit/configuration_test.rb +5 -3
  36. metadata +223 -183
data/README.md CHANGED
@@ -7,7 +7,9 @@ Report key statistics for your Rails app to [Librato Metrics](https://metrics.li
7
7
 
8
8
  **NOTE: This is currently in alpha development and is not yet officially supported**
9
9
 
10
- **IMPORTANT NOTE: If you are currently using a version prior to the rename to librato-rails, note that the env variable names for configuration and the name of the config files have changed. See the new names in configuration, below.**
10
+ **NOTES FOR ALPHA TESTERS:**
11
+ * If you are upgrading from a version prior to the rename to librato-rails, note that *the env variable names for configuration and the name of the config files have changed*. See the new names in configuration, below.
12
+ * Starting with 0.4.0 *all metrics are now submitted as gauges*. If you were using a prior version you will need to manually remove any librato-rails generated metrics which are counters.
11
13
 
12
14
  ## Installation
13
15
 
@@ -36,10 +36,19 @@ module Librato
36
36
  queue.merge!(queued) if queued
37
37
  end
38
38
 
39
- def measure(event, duration)
39
+ def measure(*args, &block)
40
+ event = args[0].to_s
41
+ returned = nil
40
42
  @lock.synchronize do
41
- @cache.add event.to_s => duration
43
+ if block_given?
44
+ start = Time.now
45
+ returned = yield
46
+ @cache.add event => ((Time.now - start) * 1000.0).to_i
47
+ else
48
+ @cache.add event => args[1] || nil
49
+ end
42
50
  end
51
+ returned
43
52
  end
44
53
  alias :timing :measure
45
54
 
@@ -15,7 +15,7 @@ module Librato
15
15
  exception = event.payload[:exception]
16
16
  # page_key = "request.#{controller}.#{action}_#{format}."
17
17
 
18
- group "#{Librato::Rails.prefix}.request" do |r|
18
+ group "rails.request" do |r|
19
19
 
20
20
  r.increment 'total'
21
21
  r.timing 'time', event.duration
@@ -46,7 +46,7 @@ module Librato
46
46
  ActiveSupport::Notifications.subscribe 'sql.active_record' do |*args|
47
47
  payload = args.last
48
48
 
49
- group "#{Librato::Rails.prefix}.sql" do |s|
49
+ group "rails.sql" do |s|
50
50
  # puts (event.payload[:name] || 'nil') + ":" + event.payload[:sql] + "\n"
51
51
  s.increment 'queries'
52
52
 
@@ -62,13 +62,13 @@ module Librato
62
62
 
63
63
  ActiveSupport::Notifications.subscribe 'deliver.action_mailer' do |*args|
64
64
  # payload[:mailer] => 'UserMailer'
65
- group "#{Librato::Rails.prefix}.mail" do |m|
65
+ group "rails.mail" do |m|
66
66
  m.increment 'sent'
67
67
  end
68
68
  end
69
69
 
70
70
  ActiveSupport::Notifications.subscribe 'receive.action_mailer' do |*args|
71
- group "#{Librato::Rails.prefix}.mail" do |m|
71
+ group "rails.mail" do |m|
72
72
  m.increment 'received'
73
73
  end
74
74
  end
@@ -1,5 +1,5 @@
1
1
  module Librato
2
2
  module Rails
3
- VERSION = "0.4.1"
3
+ VERSION = "0.5.0"
4
4
  end
5
5
  end
data/lib/librato/rails.rb CHANGED
@@ -19,7 +19,7 @@ module Librato
19
19
 
20
20
  module Rails
21
21
  extend SingleForwardable
22
- CONFIG_SETTABLE = %w{user token flush_interval prefix source}
22
+ CONFIG_SETTABLE = %w{user token flush_interval prefix source source_pids}
23
23
  FORKING_SERVERS = [:unicorn, :passenger]
24
24
 
25
25
  mattr_accessor :config_file
@@ -30,10 +30,11 @@ module Librato
30
30
  mattr_accessor :token
31
31
  mattr_accessor :flush_interval
32
32
  mattr_accessor :prefix
33
+ mattr_accessor :source_pids
33
34
 
34
35
  # config defaults
35
36
  self.flush_interval = 60 # seconds
36
- self.prefix = 'rails'
37
+ self.source_pids = true
37
38
 
38
39
  def_delegators :counters, :increment
39
40
  def_delegators :aggregate, :measure, :timing
@@ -66,7 +67,7 @@ module Librato
66
67
  logger.debug "[librato-rails] no configuration file present, using ENV variables"
67
68
  self.token = ENV['LIBRATO_METRICS_TOKEN'] if ENV['LIBRATO_METRICS_TOKEN']
68
69
  self.user = ENV['LIBRATO_METRICS_USER'] if ENV['LIBRATO_METRICS_USER']
69
- self.prefix = ENV['LIBRATO_METRICS_SOURCE'] if ENV['LIBRATO_METRICS_SOURCE']
70
+ self.source = ENV['LIBRATO_METRICS_SOURCE'] if ENV['LIBRATO_METRICS_SOURCE']
70
71
  end
71
72
  end
72
73
 
@@ -94,7 +95,7 @@ module Librato
94
95
  # send all current data to Metrics
95
96
  def flush
96
97
  logger.debug "[librato-rails] flushing #{Process.pid} (#{Time.now}):"
97
- queue = client.new_queue(:source => qualified_source)
98
+ queue = client.new_queue(:source => qualified_source, :prefix => self.prefix)
98
99
  # thread safety is handled internally for both stores
99
100
  counters.flush_to(queue)
100
101
  aggregate.flush_to(queue)
@@ -115,7 +116,7 @@ module Librato
115
116
 
116
117
  # source including process pid
117
118
  def qualified_source
118
- "#{source}.#{$$}"
119
+ self.source_pids ? "#{source}.#{$$}" : source
119
120
  end
120
121
 
121
122
  # run once during Rails startup sequence
File without changes
Binary file