The Ruby agent automatically instruments Rack middlewares. If you are unfamiliar with the basics of Rack middlewares, review the resources linked by the Rails on Rack guide. Additionally, the Ruby agent provides some features via Rack middlewares:
- Distributed traces
- Auto-instrumentation for browser monitoring
New Relic automatically installs these middlewares for Rails and Sinatra.
The two most common ways to configure Rack middlewares are the
Rack::Builder API (most often from config.ru) and Rails' middleware stack configuration:
Viewing middleware data
You can view middleware data in APM.
Disabling Rack instrumentation
If you do not want to instrument Rack middlewares, you may disable Rack middleware instrumentation with the
disable_middleware_instrumentation setting. You can also ignore specific transactions.
Installing Ruby agent middlewares manually
The Ruby agent's implementation of New Relic's cross application tracing feature uses Rack middleware instrumentation to read and write HTTP headers that are necessary to pass information between monitored applications. If you are using Sinatra, have disabled middleware instrumentation as described above, and want to use cross application tracing, you must manually add the
NewRelic::Rack::AgentHooks middleware to your middleware stack.
As of version 8.0.0, cross application tracing is deprecated in favor of distributed tracing. When enabled, distributed tracing is automatically configured for all rack-based apps without the need for an additional middleware.
If you would like to continue using cross application tracing, you will need to update your configuration.
Manual Rack instrumentation
Earlier versions of the Ruby agent supported manually instrumenting Rack middlewares via the
NewRelic::Agent::Instrumentation::Rack module. This instrumentation is deprecated in Ruby agent versions 3.9.0 or higher, because it is unnecessary with automatic middleware instrumentation. New Relic recommends that you remove references to this module from your code after upgrading to 3.9.0 or higher.