rails_autoscale_agent 0.4.0 → 0.4.1

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