AVIS DE FIN DE VIE
À partir d'avril 2022, nous ne prenons pas en charge la fonctionnalité C SDK. Pour plus de détails, consultez notre publication sur le forum d'assistance.
Le traçage distribué vous permet de voir l'intégralité du parcours de vos requests à travers un systèmes distribués. Le C SDK prend en charge le traçage standard distribué avec échantillonnage en début de workflow. Il ne prend pas en charge la fonctionnalité appelée Infinite Tracing ou W3C Trace Context.
Le C SDK nécessite que vous instrumentez manuellement vos services C, contrairement à l'auto-instrumentation d'autres agents New Relic . Cela signifie que vous devez ajouter quelques lignes à votre code pour utiliser le C SDK, puis ajouter une configuration supplémentaire pour activer le traçage distribué.
Voici comment commencer :
- Instrumenter un exemple de programme (recommandé) : Un moyen rapide de commencer
- Instrumenter les transactions et requêtes HTTP
Conseil
Si vous souhaitez en savoir plus avant de commencer, consultez ces sujets :
- Le fonctionnement de l'échantillonnage de portée explique le traçage distribué des options.
- Impacts sur APM vous indique à quoi vous attendre si vous êtes un utilisateur actuel mais que vous n'avez pas configuré le traçage distribué.
Instrumenter un exemple de programme (recommandé) :
Il s'agit d'un moyen rapide de voir comment installer le C SDK et instrumenter un service avec un traçage standard distribué.
Avant de commencer les étapes principales :
- Vous aurez besoin d'un compte New Relic pour configurer le traçage distribué. Si vous n'en avez pas encore, vous pouvez rapidement créer un compte gratuit. Notez que ce lien vous mènera vers un autre site pour terminer l'inscription, mais vous pouvez revenir ici et suivre les étapes de configuration ci-dessous.
- Assurez-vous de répondre aux exigences.
Étape 1. Identifier les services
Déterminez quels services touchent à votre demande afin de pouvoir instrumenter chacun d'eux pour envoyer des données trace à New Relic.
Étape 2. Instrumenter chaque service avec un agent APM
Nous avons un exemple de la façon d'installer le C SDK et instrumenter un exemple d'application afin qu'il commence à signaler la télémétrie à New Relic. Une fois que vous avez compris comment cela fonctionne, vous pouvez appliquer les principes à chacun de vos services C impliqués dans vos requests. Si certains de vos services utilisent d’autres langues, suivez simplement les étapes d’installation pour ces langues.
Avant d'accéder à l'exemple de service ci-dessous, notez qu'il vous demandera de créer un newrelic_app_config_t
par défaut, mais vous devrez également ajouter distributed_tracing.enabled
et le définir sur true
:
#include <stdlib.h>#include <stdio.h>#include <unistd.h>
/** A standalone example that demonstrates to users how to* configure logging, configure an app, connect an app,* start a transaction and a segment, and cleanly destroy* everything.*/#include "libnewrelic.h"
int main(void) { newrelic_app_t* app; newrelic_txn_t* txn; newrelic_app_config_t* config; newrelic_segment_t* seg;
config = newrelic_create_app_config("<YOUR_APP_NAME>", "9931ae06b54780ab846c16fc602b5778ead3907f"); config->distributed_tracing.enabled = true; ...
Pour tester le programme d'exemple, cliquez ici.
Étape 3. Afficher la trace
Après avoir instrumenté chacun de vos services avec l'agent APM, générez du trafic dans votre application afin que nous puissions capturer une trace. Voici quelques façons d'afficher votre trace dans l'UI:
Pour plus d'aide pour trouver votre trace dans l'UI:
Instrumenter les transactions et requêtes HTTP
Pour les transactions qui se produisent dans plusieurs services, les traces distribuées contiennent des informations qui permettent New Relic de les assembler dans une trace de transaction complète. Cependant, si les services monitorés par New Relic n'envoient pas de contexte de trace, cela entraînera des détails de trace incomplets. Pour plus d'informations, consultez la documentation sur la transmission de l'en-tête API de traçage distribué et la documentation de traçage distribué du C SDK sur GitHub.
Si vous voulez... | Utilisez ceci |
---|---|
Créer et renvoyer une charge utile à envoyer au service appelé | |
Accepter une charge utile envoyée depuis le premier service | Cela liera ces services ensemble dans une trace. |
Renvoyer une représentation de chaîne JSON codée en base64 de la charge utile | Cela offre le même comportement que |
Accepter une chaîne codée en base64 pour la charge utile | Cela offre le même comportement que |