Problème
Vous voyez des transactions dans l'UI APM nommées Middleware/Rack/ActionDispatch::Routing::RouteSet#call
, mais vous ne savez pas de quoi il s'agit.
Cause
Les transactions portant le nom Middleware/Rack/ActionDispatch::Routing::RouteSet#call
représentent un itinéraire dans votre application Rails qui n'a pas été instrumenté. Étant donné que le middleware Rails est instrumenté, New Relic peut capturer le temps passé sur la transaction, mais ne peut fournir aucun détail au-delà.
Il existe diverses situations pouvant conduire à des transactions nommées Middleware/Rack/ActionDispatch::Routing::RouteSet#call
. Nous avons fourni deux solutions pour les causes les plus courantes de ce type de transaction.
Solution
Si un itinéraire de votre application passe par un middleware instrumenté vers une gem non instrumentée, vous devez ajouter une instrumentation personnalisée à cette gem pour voir des données plus spécifiques sur la transaction. Pour ajouter une instrumentation personnalisée, nous vous recommandons de lire notre documentation sur l'instrumentation personnalisée Ruby.
L'ajout d'une instrumentation personnalisée à votre application est le meilleur moyen d'obtenir plus de détails sur ces transactions.
L'agent Ruby contrôle les contrôleurs d'instruments en insérant instrumentation dans ActionController::Base
. Cependant, si un itinéraire passe par un contrôleur qui n'hérite pas de ActionController::Base
, ce contrôleur a besoin d'une instrumentation. instrumentez directement votre contrôleur en ajoutant ceci à votre classe de contrôleur :
include NewRelic::Agent::Instrumentation::ControllerInstrumentation