- Capture additional layers of application backtrace frames. (From 3 -> 8)
- Extend Mongoid instrumentation to 6.x
- Add DevTrace support for newest 4.2.x and 5.x versions of Rails
- Fix edge case, causing DevTrace to fail
- Add debug tooling, allowing custom functions to be inserted into the agent at key points.
- Add a
detailed_middleware
boolean configuration option to capture per-middleware data, as opposed to the default of aggregating all middleware together. This has a small amount of additional overhead, approximately 10-15ms per request.
- Log all configuration settings at start when log level is debug
- Tune DelayedJob class name detection
- Max layaway file threshold limit
- Additional logging around file system usage
- Extract the name correctly for DelayedJob workers run via ActiveJob
- Limit memory usage for very long running requests.
- Add TrackedRequest#ignore_request! to entirely ignore and stop capturing a certain request. Use in your code by calling: ScoutApm::RequestManager.lookup.ignore_request!
- Rework Delayed Job instrumentation to not interfere with other instruments.
- Revert 2.1.11's Delayed Job change - caused issues in a handful of environments
- Support alternate methods of launching Delayed Job
- Fix issue getting a default Application Name when it wasn't explicitly set
- Send raw histograms of response time, enabling more accurate 95th %iles
- Raw histograms are used in Apdex calculations
- Gzip payloads
- Fix Mongoid (5.0) + Mongo (2.1) support
- Initial Delayed Job support
- Limit max metric size of a trace to 500.
- Adds Git revision detection, which is reported on app load and associated with transaction traces
- Fix allocations extension compilation on Ruby 1.8.7
- Support older versions of Grape (0.10 onward)
- Vendor rusage library
- Fix double-exit that caused error messages when running under Passenger
- Be less strict loading Rails environments that don't have a matching scout_apm.yml section. Previously we raised, now we log and continue to load with the ENV settings
- Fix a memory leak in error recovery code
- Fix a minor race condition in data coordination between processes.
- There was a tiny sliver of a window where a lock wasn't held, and it caused an exception to be raised.
- Enhance regular expression that determines if a backtrace line is "inside"
the application
- Avoids labeling vendor/ as part of the monitored app
- Less noisy output on errors with Context
- Not logging errors w/nil keys or values
- Bumping log level down from WARN => INFO on errors
- Fix error with complicated AR queries
- Caused high log noise
- Sidekiq instrumentation changes to handle a variety of edge cases
- Applies
Rails.application.config.filter_parameters
settings to reported transaction trace uris - Fix incompatibility with ResqueWeb and middleware instrumentation
- Fix an issue with AR instrumentation and complex queries
- Fix use of configuration option
data_file
- Update unit tests
- Added ignore key to configuration to entirely ignore an endpoint. No traces or metrics will be collected. Useful for health-check endpoints.
- Better logging for DevTrace
- Reporting object allocation & mem delta metrics and mem delta for requests and jobs.
- Collecting additional fields for transactions:
- hostname
- seconds_since_startup (larger memory increases and other other odd behavior more common when close to startup)
- Remove unused & old references to Stackprof
- Fixing exception on load if no config file is provided
- DevTrace BETA
- Don't wait on a sleeping thread during shutdown
- Mongoid bugfixes
- Bugfix related to DB detection
- Add Mongoid 5.x support
- Fix autodetection of mysql databases
- Add Grape instrumentation
- Handle DATABASE_URL configurations better
- Change default (undeteced) database to Postgres (was Mysql)
- Handle nil ignore_traces when ignoring trace patterns
- Use a more flexible approach to storing "Layaway Files" (the temporary data files the agent uses).
- Remove old & unused references to Stackprof. Prevent interaction with intentional usage of Stackprof
- Dynamic algorithm for selecting when to collect traces. Now, we will collect a more complete cross-section of your application's performance, dynamically tuned as your application runs.
- Record and report 95th percentiles for each action
- A variety of bug fixes
- Handle backslash escaped quotes inside mysql strings.
- Fix issue where error counts were being misreported
- Politely ignore cases when
request.remote_ip
raises exceptions.
- Fix another minor bug related to iso8601 timestamps
- Force timestamps to be iso8601 format
- Add
ignore_traces
config option to ignore SlowTransactions from certain URIs.
- Background Job instrumentation for Sidekiq and Sidekiq-backed ActiveJob
- Collecting backtraces on n+1 calls
- Defend against a nil
- Instrument Elasticsearch
- Instrument InfluxDB
- Instrument Mongoid
- Instrument Redis
- Add a to_s call to have HTTPClient work with URI objects. Thanks to Nicolai for providing the change!
- Add HTTPClient instrumentation
- Fix JSON encoding of special characters
- Release JSON reporting
- Fix backtracking issue with on of the SQL sanitization regexes
- Handling nil scope in LayerSlowTransactionConverter
- Lazy metric naming for ActiveRecord calls
- SQL Sanitation-Related performance improvements:
- Lazy sanitation of SQL queries: only running when needed (a slow transaction is recorded)
- An SQL sanitation performance improvement (strip! vs. gsub!)
- Removing the TRAILING_SPACES regex - not used across all db engines and adds a bit more overhead
- Add uri_reporting option to report bare path (as opposed to fullpath). Default is 'fullpath'; set to 'path' to avoid exposing URL parameters.
- Summarizing middleware instrumentation into a single metric for lower overhead.
- If monitoring isn't enabled:
- In ScoutApm::Middleware, don't start the agent
- Don't start background worker
- Improve exit handler. It wasn't being run during shutdown in some cases.
- Uses ActiveRecord::Base.configurations to access database adapter across all versions of Rails 3.0+.
- Enhance shutdown code to be sure we save current-minute metrics and minimize the amount of work necessary.
- Clarifying that Rails3 instrumentation also supports Rails4
- Fix a bug when determining the name of metrics for ActiveRecord queries
- Instrument ActionController::Base instead of ::Metal. This allows us to track time spent in before and after filters, and requests that return early from before filters.
- Avoid parsing backtraces for requests that don't end up as Slow Transactions
- Reverting backtrace parser threshold back to 0.5 (same as < v1.2 agents)
- Removing layaway file validation in main thread
- Fixing :force so agent will start in tests
- Rate-limiting slow transactions to 10 per-reporting period
- Trimming metrics from slow requests if there are more than 10.
- Collapse middleware recordings to minimize payload size
- Limit slow transactions recorded in full detail each minute to prevent overloading payload.
- Fix a small issue where the middleware that attempts to start the agent could mistakenly detect that the agent was running when in fact it wasn't.
- Middleware tracing - Track time in the Rack middleware that Rails sets up
- Queue Time tracking - Track how much time is spent in the load balancer
- Solidify support for threaded app servers (such as Puma or Thin)
- Major refactor of internals to allow more flexibility for future features
- Several bug fixes
- General Availability
- More robust Application Server detection
- Added Cloud Foundry detection
- Added hostname config option
- Reporting PaaS in app server load (Heroku or Cloud Foundry).
- Fallback to a middleware to launch the agent if we can't detect the application server for any reason
- Added agent version to checkin data
- Fix more 1.8.7 syntax errors
- Fix 1.8.7 syntax error
- Detect database connection correctly on Rails 3.0.x
- Detect and warn if the old ScoutRails plugin is installed, since it causes an conflict.
- Parse SQL correctly when using PostGIS
- Quiet overly aggressive logging during startup. You can still turn up logging by setting the SCOUT_LOG_LEVEL environment variable to 'DEBUG'
- Various minor bug fixes and clarification of log messages
- Internal changes and bug fixes.
- Minor change in Stackprof processing code. Any exception that happens there should never propagate out to the application
Big set of features getting merged in for this release.
- StackProf support! Get visibility into your Ruby code. On Ruby 2.1+, just
add
gem 'stackprof'
to your Gemfile. - Deploy tracking! Compare your application's response time, throughput and
error rate between different releases. At the bottom of your Capistrano
deploy.rb file, add
require 'scout_apm'
and we do the rest. - Log message overhaul. Removed a lot of the noise, clarified messages.
- Come out of alpha, and release a beta version.
- Initial support for Sinatra monitoring.
- Add new
application_root
option to override the autodetected location of the application.
- Add new
data_file
option to configuration, to control the location of the temporary data file. Still defaults to log/scout_apm.db. The file location must be readable and writeable by the owner of the Ruby process
- Fix support for ActiveRecord and ActionController instruments on Rails 2.3
- Fix Puma integration. Now detects both branches of preload_app! setting.
- Enhance Cpu instrumentation
- Post on-load application details in a background thread to prevent potential pauses during app boot
- Prevent instrumentation in non-web contexts. Prevents agent running in rails console, sidekiq, and similar contexts.
- Send active Gems with App Load message
- Added environment (production, development, etc) to App Load message
- Bugfix in Reporter class
- Ping APM on Application Load
- Fix compatibility with Ruby 1.8 and 1.9
- Ability to ignore child calls in instrumentation.
- Fix issues with Ruby 1.8.7 regexes
- SQL sanitization now collapses IN (?,?,?) to a single (?)
- Tweaks to Postgres query parsing
- Fix for missing scout_apm.yml file causing rake commands to fail because of a missing log file.
- Adds Puma support
- Fix for returning true for unicorn? and rainbows? when they are included in the Gemfile but not actually serving the app.
- Adds capacity calculation via "Instance/Capacity" metric.
- Tweaks tracing to still count a transaction if it results in a 500 error and includes it in accumulated time.
- Adds per-transaction error tracking (ex: Errors/Controller/widgets/index)
- Adds Heroku support:
- Detects Heroku via the 'DYNO' environment variable
- Defaults logger to STDOUT
- uses the dyno name vs. the hostname as the hostname
- Environment vars with "SCOUT_" prefix override any settings specified in the config file.
- Store the start time of slow requests.
- Boom.