重要
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End-of-life policy.
Notes
Additional locking option for Resque
There have been reports of worker process deadlocks in Resque when using the Ruby agent. An optional lock is now available to avoid those deadlocks. See https://newrelic.com/docs/ruby/resque-instrumentation for more details.
HTTP connection setup timeout
HTTP initialization in the agent lacked an appropriate timeout, leading to dropouts in reporting under certain network error conditions.
Unnecessary requests from Resque jobs
An issue causing Resque jobs to unnecessarily make requests against New Relic servers was fixed.
重要
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End-of-life policy.
Notes
Resque-pool support
Resque processes started via the resque-pool gem weren't recognized by the Ruby agent. The agent now starts correctly in those worker processes.
Environment-based configuration
All settings in newrelic.yml can now be configured via environment variables. See https://newrelic.com/docs/ruby/ruby-agent-configuration for full details.
Fix compatibility issues with excon and curb instrumentation
This release of the agent fixes a warning seen under certain circumstances with the excon gem (most notably, when excon was used by fog), as well as a bug with the curb instrumentation that conflicted with the feedzirra gem.
Allow license key to be set by Capistrano variables
A license key can be passed via a Capistrano variable where previously it could only be in newrelic.yml. Thanks Chris Marshall for the contribution!
Make HTTP client instrumentation aware of "Host" request header
If a "Host" header is set explicitly on an HTTP request, that hostname will be used for external metrics. Thanks Mislav Marohnić for the contribution!
Fix ActiveSupport::Concern warnings with MethodTracer
Including NewRelic::Agent::MethodTracer in a class using Concerns could cause deprecation warnings. Thanks Mike Połtyn for the contribution!
Fix Authlogic constant name
Code checking for the Authlogic module was using in the wrong case. Thanks Dharam Gollapudi for the contribution!
重要
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End-of-life policy.
Notes
HTTPClient and Curb support
The Ruby agent now supports the HTTPClient and Curb HTTP libraries! Cross application tracing and more is fully supported for these libraries. For more details see https://newrelic.com/docs/ruby/ruby-http-clients.
Sinatra startup improvements
In earlier agent versions, newrelic_rpm had to be required after Sinatra to get instrumentation. Now the agent should start when your Sinatra app starts up in rackup, thin, unicorn, or similar web servers.
Puma clustered mode support
Clustered mode in Puma was not reporting data without manually adding a hook to Puma's configuration. The agent will now automatically add this hook.
SSL certificate verification
Early versions of the agent's SSL support provided an option to skip certificate verification. This option has been removed.
重要
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End-of-life policy.
Notes
Rails 4.0 Support
The Ruby agent is all set for the recent general release of Rails 4.0! We've been tracking the RC's, and that work paid off. Versions 3.6.5 and 3.6.4 of the Ruby agent should work fine with Rails 4.0.0.
Excon and Typhoeus support
The Ruby agent now supports the Excon and Typhoeus HTTP libraries! For more details see https://newrelic.com/docs/ruby/ruby-http-clients.
重要
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End-of-life policy.
Notes
Exception list
We've improved exception message handling for applications running in high-security mode. Enabling 'high_security' now removes exception messages entirely rather than simply obfuscating any SQL.
By default this feature affects all exceptions, although you can configure an allow list of exceptions for messages you want to remain intact.
More details: https://newrelic.com/docs/ruby/ruby-agent-configuration
Fix a race condition affecting some Rails applications at startup
Some Rails applications using 'newrelic_rpm' were affected by a race condition at startup that manifested as an error when model classes with associations were first loaded. The cause of these errors has been addressed by moving the generation of the agent's 'EnvironmentReport' on startup from a background thread to the main thread.
重要
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End-of-life policy.
Notes
Better Sinatra Support
A number of improvements have been made to our Sinatra instrumentation. More details: https://newrelic.com/docs/ruby/sinatra-support-in-the-ruby-agent
Sinatra instrumentation has been updated to more accurately reflect the final route that was actually executed, taking pass and conditions into account.
New Relic middlewares for error collection, real user monitoring, and cross application tracing are automatically inserted into the middleware stack.
Ignoring routes, similar to functionality available to Rails controllers, is now available in Sinatra as well.
Routes in 1.4 are properly formatting in transaction names. Thanks Zachary Anker for the contribution!
Padrino Support
Along with improving our support of Sinatra, we've also extended that to supporting Padrino, a framework that builds on Sinatra. Web transactions should show up in New Relic now for Padrino apps automatically. The agent has been tested against the latest Padrino in versions 0.11.x and 0.10.x.
Main overview graph only shows web transactions
In the past database times from background jobs mixed with other web transaction metrics in the main overview graph. This often skewed graphs. A common workaround was to send background jobs to a separate application, but that should no longer be necessary as the overview graphs now only represent web transactions.
重要
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End-of-life policy.
Notes
Sequel support
The Ruby agent now supports Sequel, a database toolkit for Ruby. This includes capturing SQL calls and model operations in transaction traces, and recording slow SQL calls. See https://newrelic.com/docs/ruby/sequel-instrumentation for full details.
Thread profiling fix
The prior release of the agent (version 3.6.1) broke thread profiling. A profile would appear to run, but return no data. This has been fixed.
Fix for over-counted Net::HTTP calls
Under some circumstances, calls into Net::HTTP were being counted twice in metrics and transaction traces. This has been fixed.
Missing traced errors for Resque applications
Traced errors weren't displaying for some Resque workers, although the errors were factored into the overall count graphs. This has been fixed, and traced errors should be available again after upgrading the agent.
重要
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End-of-life policy.
Notes
Full URIs for HTTP requests are recorded in transaction traces
When recording a transaction trace node for an outgoing HTTP call via Net::HTTP, the agent will now save the full URI (instead of just the hostname) for the request. Embedded credentials, the query string, and the fragment will be stripped from the URI before it is saved.
Simplify Agent Autostart Logic
Previously the agent would only start when it detected a supported "Dispatcher", meaning a known web server or background task framework. This was problematic for customers using webservers that the agent was not configured to detect (e.g. Puma). Now the agent will attempt to report any time it detects it is running in a monitored environment (e.g. production). There are two exceptions to this. The agent will not autostart in a rails console or irb session or when the process was invoked by a rake task (e.g. rake assets:precompile). The NEWRELIC_ENABLE environment variable can be set to true or false to force the agent to start or not start.
Don't attempt to resolve collector hostname when proxy is in use
When a proxy is configured, the agent will not attempt to lookup and cache the IP address of New Relic server to which it is sending data, since DNS may not be available in some environments. Thanks to Bill Kirtley for the contribution
Added NewRelic::Agent.set_transaction_name and NewRelic::Agent.get_transaction_name
Ordinarily the name of your transaction is defined up-front, but if you'd like to change the name of a transaction while it is still running you can use NewRelic::Agent.set_transaction_name(). Similarly, if you need to know the name of the currently running transaction, you can use NewRelic::Agent.get_transaction_name().
重要
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End-of-life policy.
Notes
Sidekiq supprt
The Ruby agent now supports the Sidekiq background job framework. Traces from Sidekiq jobs will automatically show up in the Background tasks on New Relic similar to Resque and Delayed::Job tasks.
Improved thread safety
The primary metrics data structures in the Ruby agent are now thread safe. This should provide better reliability for the agent under JRuby and threaded scenarios such as Sidekiq or Puma.
More robust environment report
The agent's analysis of the local environment (e.g. OS, Processors, loaded gems) will now work in a wider variety of app environments, including Sinatra.
Experimental Rainbows! support
The Ruby agent now automatically detects and instruments the Rainbows! web server. This support is considered experimental at present, and has not been tested with all dispatch modes.
Thanks to Joseph Chen for the contribution.
Fix a potential file descriptor leak in Resque instrumentation
A file descriptor leak that occurred when DontPerform exceptions were used to abort processing of a job has been fixed. This should allow the Resque instrumentation work correctly with the resque-lonely_job gem.
重要
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End-of-life policy.
Notes
Key Transactions
The Ruby agent now supports Key Transactions! Check out more details on the feature at https://newrelic.com/docs/site/key-transactions.
Ruby 2.0
The Ruby agent is compatible with Ruby 2.0.0 which was just released.
Improved Sinatra instrumentation
Several cases around the use of conditions and pass in Sinatra are now better supported by the Ruby agent. Thanks Konstantin for the help!
Cross Application Tracing
See https://newrelic.com/docs/features/cross-application-traces for details. Adds a 'X-NewRelic-ID' header to outbound Net::HTTP requests. This change helps improve the correlation of performance between services in a service- oriented architecture.
Automatically detect Resque dispatcher
The agent does better auto-detection for the Resque worker process. This should reduce the need to set NEW_RELIC_DISPATCHER=resque directly.