Important
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.
Important
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
- Resolved some issues with tracking of frontend queue time, particularly when the agent is running on an app hosted on Heroku. The agent will now more reliably parse the headers described in https://newrelic.com/docs/features/tracking-front-end-time and will automatically detect whether the times provided are in seconds, milliseconds or microseconds.
Important
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
Use HTTPS by default
The agent now defaults to using SSL when it communicates with New Relic's servers. By defaults already configured, New Relic does not transmit any sensitive information (e.g. SQL parameters are masked), but SSL adds another layer of security. Upgrading customers may need to remove the "ssl: false" directive from their newrelic.yml to enable ssl. Customers on Jruby may need to install the jruby-openssl gem to take advantage of this feature.
- Fix two Resque-related issues
Fixes a possible hang on exit of an instrumented Resque master process (https://github.com/resque/resque/issues/578), as well as a file descriptor leak that could occur during startup of the Resque master process.
- Fix for error graph over 100%
Some errors were double counted toward the overall error total. This resulted in graphs with error percentages over 100%. This duplication did not impact the specific error traces captured, only the total metric.
- Notice gracefully handled errors in Sinatra
When show_exceptions was set to false in Sinatra, errors weren't caught by New Relic's error collector. Now handled errors also have the chance to get reported back.
- Ruby 2.0 compatibility fixes
Ruby 2.0 no longer finds protected methods by default, but will with a flag. http://tenderlovemaking.com/2012/09/07/protected-methods-and-ruby-2-0.html
Thanks Ravil Bayramgalin and Charlie Somerville for the fixes.
- Auto-detect Trinidad as dispatcher
Code already existing for detecting Trinidad as a dispatcher, but was only accessible via an ENV variable. This now auto-detects on startup. Thanks Robert Rasmussen for catching that.
- Coercion of types in collector communication
Certain metrics can be recorded with a Ruby Rational type, which JSON serializes as a string rather than a floating point value. We now treat coerce each outgoing value, and log issues before sending the data.
- Developer mode fix for chart error
Added require to fix a NameError in developer mode for summary page. Thanks to Ryan B. Harvey.
- Don't touch deprecated RAILS_ROOT if on Rails 3
Under some odd startup conditions, we would look for the RAILS_ROOT constant after failing to find the ::Rails.root in a Rails 3 app, causing deprecation warnings. Thanks for Adrian Irving-Beer for the fix.
Important
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
Add thread profiling support
Thread profiling performs statistical sampling of backtraces of all threads within your Ruby processes. This feature requires CRuby >= 1.9.2, and is controlled via the New Relic web UI. JRuby support (in 1.9.x compat mode) is considered experimental, due to issues with JRuby's Thread#backtrace.
Add audit logging capability
The agent can now log all of the data it sends to the New Relic servers to a special log file for human inspection. This feature is off by default, and can be enabled by setting the audit_log.enabled configuration key to true. You may also control the location of the audit log with the audit_log.path key.
Use config system for dispatcher, framework, and config file detection
Several aspects of the agent's configuration were not being handled by the configuration system. Detection/configuration of the dispatcher (e.g. passenger, unicorn, resque), framework (e.g. rails3, sinatra), and newrelic.yml location are now handled via the Agent environment, manual, and default configuration sources.
Updates to logging across the agent
We've carefully reviewed the logging messages that the agent outputs, adding details in some cases, and removing unnecessary clutter. We've also altered the startup sequence to ensure that we don't spam STDOUT with messages during initialization.
Fix passing environment to manual_start()
Thanks to Justin Hannus. The :env key, when passed to Agent.manual_start, can again be used to specify which section of newrelic.yml is loaded.
Rails 4 support
This release includes preliminary support for Rails 4 as of 4.0.0.beta. Rails 4 is still in development, but the agent should work as expected for people who are experimenting with the beta.
Important
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.
Fixes
- Fix incompatibility with logging gem by renaming NewRelic::Agent::Thread to NewRelic::Agent::AgentThread.
Important
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.
Fixes
Add queue time support for sinatra apps
Sinatra applications can now take advantage of frontend queue time reporting. Thanks to Winfield Peterson for this contribution.
Simplify queue time configuration for nginx 1.2.6+
Beginning in version 1.2.6, recently released as a development version, the $msec variable can be used to set an http header. This change allows frontend queue time to be tracked in New Relic simply by adding this line to the nginx config:
proxy_set_header X-Queue-Start "t=${msec}000"
It will no longer be necessary to compile a patched version of nginx or compile in the perl or lua module to enable this functionality.
Thanks to Lawrence Pit for the contribution.
Report back build number and stage along with version info
In the 3.5.3 series the agent would fail to report its full version number to NewRelic's environment report. For example it would report its version as 3.5.3 instead of 3.5.3.25 or 3.5.3.25.beta. The agent will now report its complete version number as defined in newrelic_rpm.gemspec.
The host and the port that the agent reports to can now be set from environment vars
The host can be set with NEW_RELIC_HOST and the port with NEW_RELIC_PORT. These setting will overrride any other settings in your newrelic.yml.
Fix RUM reporting to multiple applications
When the agent is configured to report to multiple "roll up" applications RUM did not work correctly.
Important
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.
Fixes
Update the collector protocol to use JSON and Ruby primitives
The communication between the agent and the NewRelic will not longer be marshaled Ruby objects, but rather JSON in the case of Ruby 1.9 and marshaled Ruby primitives in the case of 1.8. This results in greater harvest efficiency as well as feature parity with other New Relic agents.
Fix incorrect application of conditions in sinatra instrumentation
The agent's sinatra instrumentation was causing sinatra's condidtions to be incorrectly applied in some obscure cases. The bug was triggered when a condition was present on a lower priority route that would match the current request, except for the presence of a higher priority route.
Important
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.
Fixes
- Simplified process of running agent test suite and documented code contribution process in GUIDELINES_FOR_CONTRIBUTING.
Important
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.
Fixes
Enabling Memory Profiling on Lion and Mountain Lion
The agent's list of supported platforms for memory profiling wasn't correctly checking for more recent versions of OS X.
Fixed an arity issue encountered when calling newrelic_notice_error from Rails applications.
End user queue time was not being properly reported, works properly now.
Server-side configuration for ignoring errors was not being heeded by agent.
Better handling of a thread safety issue.
Some issues may remain, which we are working to address, but they should be gracefully handled now, rather than crashing the running app.
Use "java_import" rather than "include_class" when require Java Jars into a JRuby app.
Thanks to Jan Habermann for the pull request
Replaced alias_method mechanism with super call in DataMapper instrumentation.
Thanks to Michael Rykov for the pull request
Fixed the Rubinius GC profiler.
Thanks to Dirkjan Bussink
Use ActiveSupport.on_load to load controller instrumentation Rails 3.
Thanks to Jonathan del Strother
Reduce the number of thread local reference in a particular high traffic method
Thanks to Jeremy Kemper
Important
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.
Fixes
(performance) Gradual slowdown on Phusion Passenger
This release resolves a performance issue that effected sites running on some versions of Phusion Passenger. The issue manifests as a slow degradation of response time and increased CPU usage. This issue was only present in version 3.5.0 of the agent.
Drop support for Passenger versions less than 2.1.1
In order to implement the above fix we have dropped official support for Passenger versions 2.1.0 and older. These early versions of Passenger do not support an after_fork event which is necessary for the smooth operation of the agent.