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.
- data/README.md +3 -1
- data/lib/librato/rails/aggregator.rb +11 -2
- data/lib/librato/rails/subscribers.rb +4 -4
- data/lib/librato/rails/version.rb +1 -1
- data/lib/librato/rails.rb +6 -5
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/development.log +2189 -0
- data/test/dummy/log/test.log +5250 -0
- data/test/dummy/test_env.sh +2 -0
- data/test/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
- data/test/dummy/tmp/cache/assets/CDF/870/sprockets%2Fb878faf942403e313a5b103e5d80488e +0 -0
- data/test/dummy/tmp/cache/assets/CE8/7E0/sprockets%2F178e2a1f9aa891d473009c7f3095df28 +0 -0
- data/test/dummy/tmp/cache/assets/CF9/7C0/sprockets%2F40fc2f3d2a468a00e463f1d313cb1683 +0 -0
- data/test/dummy/tmp/cache/assets/D04/890/sprockets%2F587335c079eef8d5a63784fc8f99905a +0 -0
- data/test/dummy/tmp/cache/assets/D05/D40/sprockets%2F1c9faaf28d05409b88ad3113374d613c +0 -0
- data/test/dummy/tmp/cache/assets/D11/D90/sprockets%2Ff688bee5b15ad322749fd06432065df2 +0 -0
- data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/test/dummy/tmp/cache/assets/D48/6E0/sprockets%2F3d5dd928c45756c99bb1018cdbba7485 +0 -0
- data/test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/test/dummy/tmp/cache/assets/D4F/000/sprockets%2F25e44896aac12384727e9dab827ebef9 +0 -0
- data/test/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/test/dummy/tmp/cache/assets/D66/890/sprockets%2F789354d3ec91e1ba6c8e92878d8f6ff8 +0 -0
- data/test/dummy/tmp/cache/assets/D84/000/sprockets%2F2ed60caa8412eb8334fe327cab12cb32 +0 -0
- data/test/dummy/tmp/cache/assets/D8B/F90/sprockets%2Ffe6ce696e9141eb755d8eed79128e17c +0 -0
- data/test/dummy/tmp/cache/assets/D98/8B0/sprockets%2Fedbef6e0d0a4742346cf479f2c522eb0 +0 -0
- data/test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/test/fixtures/config/librato.yml +1 -0
- data/test/integration/mail_test.rb +1 -3
- data/test/integration/request_test.rb +14 -18
- data/test/integration/sql_test.rb +8 -10
- data/test/metrics-rails_test.rb +5 -0
- data/test/unit/aggregator_test.rb +29 -6
- data/test/unit/configuration_test.rb +5 -3
- 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
|
-
**
|
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(
|
39
|
+
def measure(*args, &block)
|
40
|
+
event = args[0].to_s
|
41
|
+
returned = nil
|
40
42
|
@lock.synchronize do
|
41
|
-
|
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 "
|
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 "
|
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 "
|
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 "
|
71
|
+
group "rails.mail" do |m|
|
72
72
|
m.increment 'received'
|
73
73
|
end
|
74
74
|
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.
|
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.
|
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
|