- Fix undeclared logger in grape instruments (#510)
- Add support for GoodJob (#506)
- Add support for Solid Queue (#508)
- Avoid inaccurate websocket queue time capturing (#494)
- Fix parser dependency issue
- Fix AutoInstruments when instrumenting hash with shorthand (#486)
- Fix Connection Handling deprecation in ActiveRecord for Rails 7.1 (#483)
- Update ActionView partial instrumentation for Rails 7 (#487)
- Fix adding instrumentation of ActiveRecord after configuration has initialized for Rails versions greater than 3. (#465)
- Fix typo with double use of PercentilePolicy, instead of PercentPolicy, for scoring. (#468)
- Fix span annotations/desc for external service requests with the use of prepend. (#471)
- Fix ActiveSupport methods and replace them with non ActiveSupport methods. (#474)
Unused.
- Fix double firing of Puma
on_worker_boot
when preloading. (#463)
- Update redis instruments to support redis v5.0+ (#458)
- Fix typo in HTTPClient prepend instrumentation (#457)
- Add configuraiton option to use
Module#prepend
instead ofModule#alias_method
(default) for instrumentation (#448). The default method for instrumentation has not changed, but configuration options were added to allow switching toModule#prepend
for most instrumentation. Refer to the documentation for more information: Library Instrumentation Method
- Use Sidekiq lifecycle hooks to start Scout agent on Sidekiq start. (#449)
- Improvements to SqlServer scrubbing in SqlSanitizer (#422)
- Specify correct (MIT) license in Gemspec (#430)
- Install HTTP::Client instruments (#420)
- Sanitize FROM jsonb_as_recordset AS correctly in Postgres (#332)
- Call to_h on
ActiveRecord::Base.configurations
(#434) - Allow loading of trusted
config/scout_apm.yml
viaYAML.unsafe_load
if available (#435) - Better exception handling when loading config (#436)
- Check for nil other_metric_set in merge_external_service_metrics (#437)
- Log
warn
in InstructionSequence only if SCOUT_LOG_LEVEL is debug (#438) - Check for Parser::TreeRewriter before loading AutoInstruments to avoid LoadError (#440)
- Fall back to STDERR upon exception in build_logger (#441)
- Add External Service metrics reporting (#403)
- Relicense to MIT (#429)
- Opt out of frozen string literals in select files (#427)
- Fall back when logger can't write to destination (#423)
- Avoid exception on race condition (#407)
- Add Mina deploy tracking support (#327)
- Add record_queue_time configuration (PR #422)
- Fix issue with Typheous Hydra instrument (#418)
- Preload Celluloid in Shoryuken instrumentation (#331)
- Fix deprecation warning in Rails 6.1+ (#365)
- Set Typheous's desc more directly (#392)
- Delegate to ActiveRecord #log more intelligently (#394)
- Don't delay starting agent when possible (#397)
- Fix template naming issue in Rails 6+ (#399)
- Avoid double-counting issue with AutoInstruments (#405)
- Renaming test files for Remote::{Server|Route|Message} to be included in test run (#409)
- More robust naming of Sidekiq jobs (#412)
- Allow render_template instruments to work with older Rails (#413)
- Fix function to manually capture exceptions (#415)
- Enhance SQL Sanitization (#417)
- Add Faktory Support (#385)
- Remove Regexp hack for 1.8.7 (no longer supported) (#384)
- More robust DelayedJob detection (#382)
- Fix kwargs handling in Tracing module (#381)
- Handle edge case with nil Typhoeus current-layer (#380)
- Fix args passing to render_partial (#379)
- Add Typhoeus instrumentation (#376)
- Add support for Ruby 3.0 (#374)
- Use Github Actions for CI (#370)
- Fix edge case in sanitization of Postgres SQL (#368)
- Require Ruby >= 2.1 (#270)
- ErrorService reporting. Enable with
errors_enabled
config setting. (#347) - Modular SlowRequestPolicy (#364)
- Fix deprecation warnings (#354)
- Fix an edge case in JSON serialization (#360)
- Add
ssl_cert_file
config option (#352) - Improve sanitization of Postgres UPDATE SQL (#351)
- Allow custom URL sanitization (#341)
- Lock rake version for 1.8.7 to older version (#329)
- Delete unneeded .DS_Store file that snuck in (#334)
- Fix typo in "queue_time_ms"
- Fix Rails 6 deprecation warning at boot time (#337)
- Fix partial naming on Rails 6.0 (#339)
- Support Sidekiq 6.1 instrumentation (#340)
- Remove accidental call to
as_json
- Add basic support for parsing Microsoft SQLServer queries (#317)
- Refine Postgresql Sanitization with subqueries and JSON operations (#262)
- Add a tag to any requests that reach maximum number of spans (#316)
- Update testing library Mocha (#315)
- Fix case sensitivity mismatch in Job renaming (#314)
- Add support for Sneakers 2.5 (#313)
- Fix edge case with Resque instrumentation (#312)
- Fix missing source code when used with BugSnag (#308)
- Add defensive check against a nil @address in Net/HTTP instruments (#306)
- Standardize Metadata with other language agents (#302)
- Add Mongoid 7.x support (#295)
- Add HTTP::Client support (#260)
- Fix Autoinstruments logging when running without ActiveSupport (#290)
- Fix edge-case Autoinstruments syntax error (#287)
- Fix invalid syntax for running on Ruby 1.8.7
- Logging total autoinstrumented spans and the ratio of significant to total spans (#283).
- Added
autoinstruments_ignore
option (also #283).
- Autoinstruments (#247). Disabled by default. Set
auto_instruments: true
to enable.
- Add Que support (#265)
- Add Memcached support (#279)
- Don't process limited layers in detailed traces (#268)
- Fix OctoShark (and other gems which patch ActiveRecord) interaction (#217)
- Legacy Rails 2.3 fix for as_json
- Decrease timeline trace span limit to 1,500 to address this bug.
- Added timeline traces and an associated
timeline_traces: true
config option. - Increased timeline traces span limit to 2,500 from 500.
- Fix for prepending view instruments in the case of templates that lack a
virtual_path
(#257).
- Extend #251 to use prepend on all view instruments (#255)
- Support Rails 6.0 View Instruments (#251)
- Update documentation URLs (#236)
- App & Background Integrations only install when needed (#228)
- New Setting
collect_remote_ip
, to optionally disable automated capture of end-user IP Address. No change to default behavior. - Allow setting
compress_payload
option from ENV var (#234)
start_resque_server_instrument
option to allow disabling the WEBrick server component in custom installation scenarios- Allow setting
revision_sha
setting in YAML
- Fix disabled_instruments (#220)
- Add Shoryuken Support (#215)
- Add Sneakers Support (#216)
- Renames SQL
BEGIN
andCOMMIT
statements fromSQL#other
toSQL#begin
andSQL#commit
, respectively. - Makes naming between transaction and database metrics consistent. Previously, database metrics lacking a provided ActiveRecord label were named
SQL#other
.
- Fix synchronization bug in Store (#205, PR #210)
- Fix bug that causes no data to be reported to Scout when DataDog is installed (#211)
- Fix
NoMethodError for LayerChildrenSet
whenlog_level: debug
in certain situations.
- Fix database connection issue when installed in an app also using the Textacular gem
- Incorporating total time consumed into transaction trace policy
- Calculates DelayedJob queue latency correctly when jobs are scheduled to run in the future
- Adds transaction + periodic reporting callback extension support
- Use Module#prepend if available for ActiveRecord
exec_query
instrument
- Improve ActiveRecord instrumentation across Rails 3.2+, and adding support for the newly released Rails 5.2
- ScoutApm::Transaction#rename and #ignore API
- Explicit custom instrumentation with ScoutApm::Tracer#instrument blocks, without needing to include a module
- Quieter logging in normal startup cases
- Upgraded testing infrastructure
- Fix issue with detailed middleware instrumentation
- Fix issue recording backtraces
- Fix an edge case for Resque instrumentation
- More robust installation of instruments at startup
- Several (very) minor bug fixes
- Prevent agent from starting when monitor=false
- Fix double-counting of HTTP requests when multiple http libraries are present
- Fix an issue with Resque instrumentation
- Ensure a startup hook runs on forking webservers
- Fix shutdown hook for Passenger
- Fix logging on STDOUT only platforms (Heroku)
- Rework agent startup sequence
- Install all background job instrumentations if you're running more than one
- Capture longer individual SQL statements
- Capture multiple SQL statements if multiple are run during a single AR call.
- More robust recovery from stale layaway files
- Quiet logging when hitting unusual layaway file limits
- Better naming for Sidekiq delayed method jobs
- Webrick is only required if actually needed
- Capture 300 characters of a url from net/http and httpclient instruments (up from 100).
- Capture ActiveRecord calls that generate more complex queries
- More aggressively determine names of complex queries (to determine "User/find", "Account/create" and similar)
- Increases the maximum size of SQL queries that are sanitized to 16KB from 4 KB
- Captures all SQL individual queries generated in a given AR call (previous only a single query was captured)
- More robust startup sequence when using
rails server
vs. directly launching an app server - Avoid incompatibility with 3rd party gems that aggressively obtain database connections
- Fix DevTrace bug
Note: ScoutApm Agent version 2.2.0 was the initial ScoutProf agent that was determined quickly to be a big enough change to warrant the move to 3.0. We are not reusing that version number to avoid confusion.
- Deeper database query instrumentation. The agent now collects app-wide database usage on every call. This will allow you to better identify persistently slow queries, and capacity bottlenecks.
- Optimize the approach used during recording each request to avoid unnecessary work, improving performance
- Better naming when using Resque + ActiveJob
- Better naming when using Sidekiq + DelayedExtension
- Better detection of Resque queue names
- Fix passing arguments through Active Record instrumentation. (Thanks to Nick Quaranto for providing the fix)
- Stricter checks to prevent agent from starting in Rails console
- Add Resque support.
- Add
scm_subdirectory
option. Useful for when your app code does not live in your SCM root directory.
- Changes to app server load data
- Don't attempt to call
current_layer.type
on nil
- Bug fix 4b188d6
- Automatically instrument API and Metal controllers.
- 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.