We’re using Grape in our Rails app on Heroku, which comes with New Relic instrumentation out-of-the-box. Lets get the Grape API route details to show in New Relic as well.
Add the newrelic_rpm gem to Gemfile. It will give us a start with Grape Middleware.
- group :production do
- gem "newrelic_rpm", "3.1.2"
Grape is a Rack-based system. If we wanted to display a bulk metric for Rack middleware, we could simply extend our API model as follows.
- class Api < Grape::API
- if Rails.env.production?
- extend NewRelic::Agent::Instrumentation::Rack
I use New Relic in production only, hence the if block. But this is not good enough for us – this would show a single API entry for all calls.
Examining the source code for NewRelic’s Rack module, we can make a few small changes and show the API path itself. Copy-paste the code from my config/initializers/new_relic_agent_instrumentation_api.rb, importing it with extend NewRelic::Agent::Instrumentation::API in the API class. All it does is figure out a better name for New Relic to record – in this case the API path without forward slashes and an appended lowercase method after the #.
New Relic Screenshots
A breakdown per API. We got api/v1/search and api/v1/me.
Drilling through the top entry we can see the performance breakdown (including the MongoDB instrumentation that comes from the rpm_contrib gem).