rails_autoscale_agent 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 835d9318705ae0bab9644578e6e39f6b29dd9c36d50671cf8651e44bfcfe2af5
4
- data.tar.gz: c205493eb704e12e8d7da388de903e9391dfa328636118021ff5f4ca4173b127
3
+ metadata.gz: 9599e5eb723b8e92f13eb6f820ce7f49f6af5ae946146eb140f13e42a465625a
4
+ data.tar.gz: 94eeec3ac6376605b5d0db1c8aa406c1f7101fddbf2f188e1cbb41c5f2f836bc
5
5
  SHA512:
6
- metadata.gz: 7fe642672aa559193cd48ca32ade1acdabc3c176d8a9435b4964bb0db86752fdd2aae9ed1698d75570c015b44a87d0b6dd895925cadc831a2f4628f4c9a5efe8
7
- data.tar.gz: f55a4a48fe981add95eb0ad497bc7d389841e0d2c9254a63b4378284f2bd14ae364b0b3a5e468783b23f453d31c34e84f716f1d27fbde56ec8c3c7f8a4d4d1c4
6
+ metadata.gz: c8d33309ab62d23341bc707e8b5e5da5158e21885911fd0418a58c5880b4fe24a309cabf3cd08513382e18570e7c28f8ff2fa1bb7362f040aac8f3210fdf306e
7
+ data.tar.gz: 41999dbec255f00d7f3369f97e81acae12c556b126050ea28a50816a8c91801a8dfa256cdfc14f8126c4ad175ecd9dc16fd3b8136aaf0c9805301a362cdf81de
data/README.md CHANGED
@@ -2,14 +2,11 @@
2
2
 
3
3
  [![Build Status](https://travis-ci.org/adamlogic/rails_autoscale_agent.svg?branch=master)](https://travis-ci.org/adamlogic/rails_autoscale_agent)
4
4
 
5
- This gem works together with the Rails Autoscale Heroku add-on
6
- to automatically scale your web dynos as needed.
7
- It gathers a minimal set of metrics for each request,
8
- and periodically posts this data asynchronously to the Rails Autoscale service.
5
+ This gem works together with the [Rails Autoscale](https://railsautoscale.com) Heroku add-on to automatically scale your web dynos as needed. It gathers a minimal set of metrics for each request, and periodically posts this data asynchronously to the Rails Autoscale service.
9
6
 
10
7
  ## Requirements
11
8
 
12
- We've tested this with Rails versions 3.2 and higher and Ruby versions 1.9.3 and higher.
9
+ Tested with Rails versions 3.2 and higher and Ruby versions 1.9.3 and higher.
13
10
 
14
11
  ## Getting Started
15
12
 
@@ -19,17 +16,13 @@ Add this line to your application's Gemfile and run `bundle`:
19
16
  gem 'rails_autoscale_agent'
20
17
  ```
21
18
 
22
- This will automatically insert the agent into your Rack middleware stack.
19
+ This inserts the agent into your Rack middleware stack.
23
20
 
24
- The agent will only communicate with Rails Autoscale if a `RAILS_AUTOSCALE_URL` ENV variable is present,
25
- which happens automatically when you install the Heroku add-on.
26
- In development (or anytime the ENV var is missing), the middleware will still produce
27
- `INFO`-level log output to your Rails log.
21
+ The agent will only communicate with Rails Autoscale if a `RAILS_AUTOSCALE_URL` ENV variable is present, which happens automatically when you install the Heroku add-on. The middleware does nothing if `RAILS_AUTOSCALE_URL` is not present, such as in development or a staging app.
28
22
 
29
23
  ## Non-Rails Rack apps
30
24
 
31
- You'll need to insert the `RailsAutoscaleAgent::Middleware` manually. Insert it
32
- before `Rack::Runtime` to ensure accuracy of request queue timings.
25
+ You'll need to insert the `RailsAutoscaleAgent::Middleware` manually. Insert it before `Rack::Runtime` to ensure accuracy of request queue timings.
33
26
 
34
27
  ## Changing the logger
35
28
 
@@ -39,16 +32,40 @@ If you wish to use a different logger you can set it on the configuration object
39
32
  RailsAutoscaleAgent::Config.instance.logger = MyLogger.new
40
33
  ```
41
34
 
35
+ ## What data is collected?
36
+
37
+ The middleware agent runs in its own thread so your web requests are not impacted. The following data is submitted periodically to the Rails Autoscale API:
38
+
39
+ - Ruby version
40
+ - Rails version
41
+ - Gem version
42
+ - Dyno name (example: web.1)
43
+ - PID
44
+ - Collection of queue time measurements (time and milliseconds)
45
+
46
+ Rails Autoscale processes and stores this information in order to power the autoscaling algorithm and dashboard visualizations.
47
+
48
+ ## Troubleshooting
49
+
50
+ If your logger supports tagged logging (as the Rails logger does by default), all log output from this gem is prefixed with "[RailsAutoscale]".
51
+
52
+ Once installed, you should see something like this in development:
53
+
54
+ > [RailsAutoscale] Reporter not started: RAILS_AUTOSCALE_URL is not set
55
+
56
+ In production, you should see something like this:
57
+
58
+ > [RailsAutoscale] Reporter starting, will report every 15 seconds
59
+
60
+ If you don't see either of these, try running `bundle` again and restarting your Rails application.
61
+
62
+ Reach out to help@railsautoscale.com if you run into any other problems.
63
+
42
64
  ## Development
43
65
 
44
- After checking out the repo, run `bin/setup` to install dependencies.
45
- Then, run `rake spec` to run the tests.
46
- You can also run `bin/console` for an interactive prompt that will allow you to experiment.
66
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
47
67
 
48
- To install this gem onto your local machine, run `bundle exec rake install`.
49
- To release a new version, update the version number in `version.rb`,
50
- and then run `bundle exec rake release`, which will create a git tag for the version,
51
- push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
68
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
52
69
 
53
70
  ## Contributing
54
71
 
@@ -2,10 +2,17 @@
2
2
 
3
3
  module RailsAutoscaleAgent
4
4
  module Logger
5
-
6
5
  def logger
7
- @logger ||= Config.instance.logger
6
+ @logger ||= Config.instance.logger.tap do |logger|
7
+ logger.extend(FakeTaggedLogging) unless logger.respond_to?(:tagged)
8
+ end
8
9
  end
9
10
 
11
+ module FakeTaggedLogging
12
+ def tagged(*tags)
13
+ # NOTE: Quack like ActiveSupport::TaggedLogging, but don't reimplement
14
+ yield self
15
+ end
16
+ end
10
17
  end
11
18
  end
@@ -59,7 +59,7 @@ module RailsAutoscaleAgent
59
59
 
60
60
  case result
61
61
  when AutoscaleApi::SuccessResponse
62
- logger.info "Reported successfully"
62
+ logger.debug "Reported successfully"
63
63
  when AutoscaleApi::FailureResponse
64
64
  logger.error "Reporter failed: #{result.failure_message}"
65
65
  end
@@ -3,7 +3,7 @@
3
3
  module RailsAutoscaleAgent
4
4
  class Request
5
5
  include Logger
6
-
6
+
7
7
  attr_reader :id, :entered_queue_at, :path, :method, :size
8
8
 
9
9
  def initialize(env, config)
@@ -26,11 +26,11 @@ module RailsAutoscaleAgent
26
26
  if entered_queue_at
27
27
  if entered_queue_at < (Time.now - 60 * 10)
28
28
  # ignore unreasonable values
29
- logger.info "request queued for more than 10 minutes... skipping collection"
29
+ logger.warn "request queued for more than 10 minutes... skipping collection"
30
30
  else
31
31
  queue_time = ((Time.now - entered_queue_at) * 1000).to_i
32
32
  queue_time = 0 if queue_time < 0
33
- logger.info "Collected queue_time=#{queue_time}ms request_id=#{id} request_size=#{size}"
33
+ logger.debug "Collected queue_time=#{queue_time}ms request_id=#{id} request_size=#{size}"
34
34
 
35
35
  queue_time
36
36
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RailsAutoscaleAgent
4
- VERSION = "0.4.0"
4
+ VERSION = "0.4.1"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_autoscale_agent
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam McCrea
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-15 00:00:00.000000000 Z
11
+ date: 2019-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport