librato-rails 0.4.1 → 0.5.0

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