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:
New Relic automatically installs these middlewares for Rails and Sinatra.
Rack instrumentationThe two most common ways to configure Rack middlewares are the Rack::Builder
API (most often from config.ru) and Rails' middleware stack configuration:
Middlewares in your config.ru file are configured using Rack::Builder
. For the Ruby agent to instrument middlewares from Rack::Builder
, your app must run version 1.1.0 or higher of the rack
gem. This is the most common use of middlewares with Sinatra or pure-rack applications.
Rails uses its own class (ActionDispatch::MiddlewareStack
) instead of Rack::Builder
to configure middlewares. Even if you haven't explicitly added middlewares to your Rails application, many components of Rails itself are implemented as middleware, so middleware data will appear by default.
The Ruby agent automatically instruments middlewares added via ActionDispatch::MiddlewareStack
on Rails 3.0 or higher. For more information about configuring middlewares with Rails, see the Ruby on Rails guide .
You can view middleware data in APM.
The main chart on your app's APM Summary page includes a purple bar that shows average time per request spent in all Rack middlewares for your application.
APM > (selected application) > Summary: Middleware time appears in purple on your app's main Overview chart.
You can also see time for individual middlewares for a specific transaction name from your app's APM Transactions page.
APM > (selected application) > Monitor > Transactions > (selected transaction) > Trace details: Here is an example of middleware time for a selected transaction for your app.
Transaction traces also capture detailed middleware call information.
APM > (selected application) > Monitor > Transactions > (selected transaction trace): Here is an example of middleware details in a transaction trace.
Disabling Rack instrumentationIf 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.
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 instrumentationEarlier versions of the Ruby agent supported manually instrumenting Rack middlewares via the NewRelic::Agent::Instrumentation::Rack
module. This instrumentation has been removed and isn't guaranteed to work in Ruby agent version 4.0.0 or higher. This form of manual instrumentation is unncessary with automatic middleware instrumentation. We recommend that you remove references to this module from your code after upgrading to 3.9.0 or higher.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4