L'agent Ruby New Relic instrumente automatiquement les clients et serveurs gRPC qui utilisent le gem grpc (version 1.0.0 ou supérieure). Tous les types de communication sont pris en charge : unaire, bidirectionnel, streaming client et streaming serveur.
Important
L'instrumentation gRPC nécessite l'agent Ruby version 8.10.0 ou supérieure.
configuration (tous les paramètres sont facultatifs)
Vous pouvez configurer l'instrumentation des clients et des serveurs gRPC séparément. Par défaut, les deux options de configuration sont définies sur auto
, qui est l'abréviation de automatic
. Le comportement automatique de l'agent pour chacun consiste à activer l'instrumentation en essayant d'abord de tirer parti du comportement de préfixe du module Ruby et en revenant au comportement de la chaîne de méthodes Ruby si des problèmes de compatibilité connus sont rencontrés.
Voir des options et des exemples supplémentaires dans les sections qui suivent.
Options client et serveur
Vous pouvez modifier le comportement de l'agent en modifiant le fichier de configuration New Relic ou en définissant des variables d'environnement. Voici les options qui s’appliquent aux clients et aux serveurs :
auto
: La valeur par défaut qui est activée via la sélection automatique du comportement de la méthode Rubydisabled
:instrumentation désactivéeprepend
: Forcer l'utilisation de la méthode Ruby en préfixechain
: Forcer l'utilisation de la méthode Ruby chaîne
Options spécifiques au client
Utilisez les éléments suivants uniquement pour les clients :
- paramètre du fichier de configuration :
instrumentation.grpc_client
- variable d'environnement:
NEW_RELIC_INSTRUMENTATION_GRPC_CLIENT
Options spécifiques au serveur
Utilisez les éléments suivants uniquement pour les serveurs :
- paramètre du fichier de configuration :
instrumentation.grpc_server
- variable d'environnement:
NEW_RELIC_INSTRUMENTATION_GRPC_SERVER
Exemples de configuration client et serveur
Pour désactiver l’instrumentation du serveur gRPC via le fichier de configuration :
# newrelic.ymlinstrumentation.grpc_server: disabled
Pour désactiver l’instrumentation du client gRPC via une variable d’environnement :
$export NEW_RELIC_INSTRUMENTATION_GRPC_CLIENT=disabled
Vérification
Une fois l'agent Ruby New Relic démarré, il détectera la présence de la gem grpc
chargée, puis tentera d'appliquer l'instrumentation gRPC. En cas de succès de l'application de cette instrumentation pour les composants client et serveur gRPC , l'agent écrira les lignes suivantes dans son fichier de log (log/newrelic_agent.log
par défaut) :
INFO : Installing New Relic supported gRPC_Client instrumentation using PrependINFO : Installing New Relic supported gRPC_Server instrumentation using Prepend
Usage
Tant que l'instrumentation fonctionne correctement (voir Vérification ci-dessus pour confirmer cela), toute l'instrumentation effectuée par l'agent Ruby New Relic doit être entièrement automatique et ne nécessiter aucune modification de votre code client et/ou serveur gRPC existant.
L'instrumentation gRPC de l'agent Ruby New Relic inclut des en-têtes de tracing distribué dans les étendues, ce qui permet aux appels client et serveur gRPC d'être connectés à tout autre service prenant en charge le tracing distribué W3C. gRPC requests peuvent être envoyées depuis un client basé sur Ruby vers un serveur basé sur un autre langage, et un serveur requests basé sur Ruby peut traiter provenant d'un client basé sur un autre langage.
Important
gRPC des clients requests ne seront pas signalées à New Relic, sauf si elles sont générées lorsqu'une transaction New Relic existante est présente. En général, cela signifie qu'une méthode de contrôleur Rails ou un processus de travail en arrière-plan est actif et responsable de l'invocation de la demande du client gRPC. La demande sera ensuite intégrée à la transaction de ce wrapper externe dans l'UI Web de New Relic.
gRPC du serveur requests généreront toujours une nouvelle transaction New Relic et ne nécessiteront ni ne se cumuleront avec aucune transaction New Relic préexistante.
Afficher les données
Vous pouvez voir les données gRPC collectées sur un certain nombre de pages de l'UI de New Relic.
Page de résumé
Sur la UI page Résumé, gRPC client requests apparaissent sous forme de transactions Web et contribuent aux données des graphiques suivants :, Web transactions time Throughput Error rateet.
Page de traing distribué
Conseil
Le tracing distribué est activé par défaut dans les nouveaux agents Ruby , mais si vous avez des questions, consultez le tracing distribué pour vos services Ruby .
Consultez les données gRPC sur la page de tracing distribué de l'UI:
Allez à one.newrelic.com > All capabilities > APM & services.
Cliquez sur votre entité (service).
Dans la section Monitor du volet de gauche, cliquez sur Distributed tracing.
Cliquez sur un groupe trace .
Choisissez une trace dans la liste et cliquez dessus.
Cliquez sur Expand all.
Dans la liste des étendues de trace résultantes, cliquez sur une étendue de trace individuelle.
Cliquez sur l’onglet Attributes dans le volet de droite.
- Client instances: Les attributs
grpc_status
,grpc_type
,http.method
ethttp.url
doivent tous apparaître. En cas d'échec d'une requête client (qui aura une valeurgrpc_status
autre que0
), un attributgrpc_message
supplémentaire apparaîtra avec le message d'état gRPC . - Server instances: Les attributs
request.grpc_type
,request.method
etrequest.uri
doivent tous apparaître.
- Client instances: Les attributs
Tant que les applications client et serveur sont monitorées par un agent New Relic prenant en charge gRPC (en Ruby ou dans un autre langage), la carte de tracing distribué doit effectuer les opérations suivantes :
- Affichez les applications client et serveur.
- Indiquez combien de types d'appels distincts ont été effectués entre eux.
En cas d'exception Ruby basée sur gRPC, les informations sur l'exception apparaîtront sur la page Events > Errors.
Assistance et commentaires
Lorsque vous contactez New Relic pour obtenir de l'aide et/ou des commentaires concernant l'instrumentation gRPC de l'agent Ruby New Relic, essayez d'avoir des réponses aux questions suivantes :
- Quelle version de la gem
grpc
utilisez-vous ? - Utilisez-vous New Relic Infinite Tracing ?
- Comment décririez-vous l’environnement de votre application ? (framework, version Ruby , autres technologies clés utilisées)
- À quoi sert gRPC ?
- Utilisez-vous Ruby pour les clients gRPC ?
- Utilisez-vous une langue différente pour les clients gRPC ?
- Utilisez-vous Ruby pour les serveurs gRPC ?
- Utilisez-vous un langage différent pour les serveurs gRPC ?
- Où appelez-vous votre code client gRPC ? (à partir d'un contrôleur, d'une tâche en arrière-plan, etc.)
- Quelle(s) stratégie(s) utilisez-vous pour envoyer vos données ? (unaire, bidirectionnel, streaming client, streaming serveur)