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