librato-rails 0.8.0 → 0.8.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +81 -45
- data/lib/librato/rails/version.rb +1 -1
- 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 +11522 -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
- metadata +56 -4
data/README.md
CHANGED
@@ -3,18 +3,39 @@ librato-rails
|
|
3
3
|
|
4
4
|
[![Build Status](https://secure.travis-ci.org/librato/librato-rails.png?branch=master)](http://travis-ci.org/librato/librato-rails)
|
5
5
|
|
6
|
-
|
6
|
+
`librato-rails` will report key statistics for your Rails app to [Librato Metrics](https://metrics.librato.com/) and allow you to easily track your own custom metrics. Metrics are delivered asynchronously behind the scenes so they won't affect performance of your requests.
|
7
7
|
|
8
|
-
|
8
|
+
Currently Rails 3.0+ and Ruby 1.9.2+ are required.
|
9
9
|
|
10
|
-
You may want to read the [notes on upgrading](https://github.com/librato/librato-rails/wiki/Alpha-Tester-Upgrade-Notes) if you
|
10
|
+
You may want to read the [notes on upgrading](https://github.com/librato/librato-rails/wiki/Alpha-Tester-Upgrade-Notes) if you were an alpha tester.
|
11
|
+
|
12
|
+
## Quick Start
|
13
|
+
|
14
|
+
Installing `librato-rails` and relaunching your application will automatically start the reporting of metrics to your Metrics account.
|
15
|
+
|
16
|
+
After installation `librato-rails` will detect your environment and start reporting available performance information for your application.
|
17
|
+
|
18
|
+
Custom metrics can also be added easily:
|
19
|
+
|
20
|
+
```ruby
|
21
|
+
# keep counts of key events
|
22
|
+
Librato.increment 'user.signup'
|
23
|
+
|
24
|
+
# easily benchmark sections of code to verify production performance
|
25
|
+
Librato.timing 'my.complicated.work' do
|
26
|
+
# do work
|
27
|
+
end
|
28
|
+
|
29
|
+
# track averages across requests
|
30
|
+
Librato.measure 'user.social_graph.nodes', user.social_graph.size
|
31
|
+
```
|
11
32
|
|
12
33
|
## Installation
|
13
34
|
|
14
35
|
In your `Gemfile` add:
|
15
36
|
|
16
37
|
gem 'librato-rails'
|
17
|
-
|
38
|
+
|
18
39
|
Then run `bundle install`.
|
19
40
|
|
20
41
|
## Configuration
|
@@ -25,17 +46,19 @@ If you don't have a Metrics account already, [sign up](https://metrics.librato.c
|
|
25
46
|
|
26
47
|
Create a `config/librato.yml` like the following:
|
27
48
|
|
28
|
-
|
29
|
-
|
30
|
-
|
49
|
+
```yaml
|
50
|
+
production:
|
51
|
+
user: <your-email>
|
52
|
+
token: <your-api-key>
|
53
|
+
```
|
31
54
|
|
32
|
-
The `librato.yml` file is parsed via ERB in case you need to add some host or environment-specific magic.
|
55
|
+
The `librato.yml` file is parsed via ERB in case you need to add some host or environment-specific magic.
|
33
56
|
|
34
|
-
Note that using a configuration file allows you to specify different configurations per-environment. Submission will be disabled in any environment without credentials.
|
57
|
+
Note that using a configuration file allows you to specify different configurations per-environment. Submission will be disabled in any environment without credentials.
|
35
58
|
|
36
59
|
##### Use environment variables
|
37
60
|
|
38
|
-
Alternately you can provide `LIBRATO_USER` and `LIBRATO_TOKEN` environment variables. Unlike config file settings, environment variables will be used in all non-test environments (development, production, etc).
|
61
|
+
Alternately you can provide `LIBRATO_USER` and `LIBRATO_TOKEN` environment variables. Unlike config file settings, environment variables will be used in all non-test environments (development, production, etc).
|
39
62
|
|
40
63
|
Note that if a config file is present, _all environment variables will be ignored_.
|
41
64
|
|
@@ -48,7 +71,7 @@ If you are using the Librato Metrics Heroku addon, your user and token environme
|
|
48
71
|
In either case you will need to specify a custom source for your app to track properly. If `librato-rails` does not detect an explicit source it will not start. You can set the source in your environment:
|
49
72
|
|
50
73
|
heroku config:add LIBRATO_SOURCE=myappname
|
51
|
-
|
74
|
+
|
52
75
|
If you are using a config file, add your source entry to that instead.
|
53
76
|
|
54
77
|
Full information on configuration options is available on the [configuration wiki page](https://github.com/librato/librato-rails/wiki/Configuration).
|
@@ -57,9 +80,9 @@ Note that if Heroku idles your application measurements will not be sent until i
|
|
57
80
|
|
58
81
|
## Automatic Measurements
|
59
82
|
|
60
|
-
After installing `librato-rails` and restarting your app and you will see a number of new metrics appear in your Metrics account. These track request performance, sql queries, mail handling, and other key stats.
|
83
|
+
After installing `librato-rails` and restarting your app and you will see a number of new metrics appear in your Metrics account. These track request performance, sql queries, mail handling, and other key stats.
|
61
84
|
|
62
|
-
Built-in performance metrics will start with either `rack` or `rails`, depending on the level they are being sampled from. For example: `rails.request.total` is the total number of requests rails has received each minute.
|
85
|
+
Built-in performance metrics will start with either `rack` or `rails`, depending on the level they are being sampled from. For example: `rails.request.total` is the total number of requests rails has received each minute.
|
63
86
|
|
64
87
|
## Custom Measurements
|
65
88
|
|
@@ -69,15 +92,17 @@ Tracking anything that interests you is easy with Metrics. There are four primar
|
|
69
92
|
|
70
93
|
Use for tracking a running total of something _across_ requests, examples:
|
71
94
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
95
|
+
```ruby
|
96
|
+
# increment the 'sales_completed' metric by one
|
97
|
+
Librato.increment 'sales_completed'
|
98
|
+
|
99
|
+
# increment by five
|
100
|
+
Librato.increment 'items_purchased', :by => 5
|
101
|
+
|
102
|
+
# increment with a custom source
|
103
|
+
Librato.increment 'user.purchases', :source => user.id
|
104
|
+
```
|
105
|
+
|
81
106
|
Other things you might track this way: user signups, requests of a certain type or to a certain route, total jobs queued or processed, emails sent or received
|
82
107
|
|
83
108
|
###### Sporadic Increment Reporting
|
@@ -86,46 +111,57 @@ Note that `increment` is primarily used for tracking the rate of occurrence of s
|
|
86
111
|
|
87
112
|
Especially with custom sources you may want the opposite behavior - reporting a measurement only during intervals where `increment` was called on the metric:
|
88
113
|
|
89
|
-
|
90
|
-
|
114
|
+
```ruby
|
115
|
+
# report a value for 'user.uploaded_file' only during non-zero intervals
|
116
|
+
Librato.increment 'user.uploaded_file', :source => user.id, :sporadic => true
|
117
|
+
```
|
91
118
|
|
92
119
|
#### measure
|
93
120
|
|
94
121
|
Use when you want to track an average value _per_-request. Examples:
|
95
122
|
|
96
|
-
|
123
|
+
```ruby
|
124
|
+
Librato.measure 'user.social_graph.nodes', 212
|
97
125
|
|
98
|
-
|
99
|
-
|
100
|
-
|
126
|
+
# report from a custom source
|
127
|
+
Librato.measure 'jobs.queued', 3, :source => 'worker.12'
|
128
|
+
```
|
101
129
|
|
102
130
|
#### timing
|
103
131
|
|
104
132
|
Like `Librato.measure` this is per-request, but specialized for timing information:
|
105
133
|
|
106
|
-
|
107
|
-
|
134
|
+
```ruby
|
135
|
+
Librato.timing 'twitter.lookup.time', 21.2
|
136
|
+
```
|
137
|
+
|
108
138
|
The block form auto-submits the time it took for its contents to execute as the measurement value:
|
109
139
|
|
110
|
-
|
111
|
-
|
112
|
-
|
140
|
+
```ruby
|
141
|
+
Librato.timing 'twitter.lookup.time' do
|
142
|
+
@twitter = Twitter.lookup(user)
|
143
|
+
end
|
144
|
+
```
|
113
145
|
|
114
146
|
#### group
|
115
147
|
|
116
148
|
There is also a grouping helper, to make managing nested metrics easier. So this:
|
117
149
|
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
150
|
+
```ruby
|
151
|
+
Librato.measure 'memcached.gets', 20
|
152
|
+
Librato.measure 'memcached.sets', 2
|
153
|
+
Librato.measure 'memcached.hits', 18
|
154
|
+
```
|
155
|
+
|
122
156
|
Can also be written as:
|
123
157
|
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
158
|
+
```ruby
|
159
|
+
Librato.group 'memcached' do |g|
|
160
|
+
g.measure 'gets', 20
|
161
|
+
g.measure 'sets', 2
|
162
|
+
g.measure 'hits', 18
|
163
|
+
end
|
164
|
+
```
|
129
165
|
|
130
166
|
Symbols can be used interchangably with strings for metric names.
|
131
167
|
|
@@ -135,17 +171,17 @@ You can set an optional prefix to all metrics reported by `librato-rails` in you
|
|
135
171
|
|
136
172
|
## Cross-Process Aggregation
|
137
173
|
|
138
|
-
`librato-rails` submits measurements back to the Librato platform on a _per-process_ basis. By default these measurements are then combined into a single measurement per source (default is your hostname) before persisting the data.
|
174
|
+
`librato-rails` submits measurements back to the Librato platform on a _per-process_ basis. By default these measurements are then combined into a single measurement per source (default is your hostname) before persisting the data.
|
139
175
|
|
140
176
|
For example if you have 4 hosts with 8 unicorn instances each (i.e. 32 processes total), on the Metrics site you'll find 4 data streams (1 per host) instead of 32.
|
141
177
|
Current pricing applies after aggregation, so in this case you will be charged for 4 streams instead of 32.
|
142
178
|
|
143
179
|
If you want to report per-process instead, you can set `source_pids` to `true` in
|
144
|
-
your config, which will append the process id to the source name used by each thread.
|
180
|
+
your config, which will append the process id to the source name used by each thread.
|
145
181
|
|
146
182
|
## Troubleshooting
|
147
183
|
|
148
|
-
Note that it may take 2-3 minutes for the first results to show up in your Metrics account after you have started your servers with `librato-rails` enabled and the first request has been received.
|
184
|
+
Note that it may take 2-3 minutes for the first results to show up in your Metrics account after you have started your servers with `librato-rails` enabled and the first request has been received.
|
149
185
|
|
150
186
|
If you want to get more information about `librato-rails` submissions to the Metrics service you can set your `log_level` to `debug` (see [configuration](https://github.com/librato/librato-rails/wiki/Configuration)) to get detailed information added to your logs about the settings `librato-rails` is seeing at startup and when it is submitting.
|
151
187
|
|
File without changes
|
Binary file
|