Tous les produits
Search
Centre de documentation

Managed Service for OpenTelemetry:Use Jaeger to report C++ application data

Dernière mise à jour :Oct 09, 2026

Instrumentez une application C++ avec Jaeger afin d'envoyer les données de traçage vers Managed Service for OpenTelemetry. Après l'intégration, vous pouvez consulter les cartes topologiques, les traces distribuées, les transactions anormales et lentes, ainsi que l'analyse SQL dans la console.

Important

Nous vous recommandons de connecter votre application à Managed Service for OpenTelemetry en utilisant le protocole OpenTelemetry (OTLP). Cette approche vous offre davantage de fonctionnalités, des capacités de traçage plus avancées et une meilleure expérience utilisateur. Alibaba Cloud fournit des instructions détaillées sur l'intégration d'OpenTelemetry avec une application, ainsi que les meilleures pratiques d'utilisation d'OpenTelemetry, pour vous aider à prendre rapidement en main Managed Service for OpenTelemetry. Pour plus d'informations, consultez la rubrique Préparatifs.

Fonctionnement de l'envoi des données

Les données de traçage transitent de votre application vers Managed Service for OpenTelemetry selon l'un des deux chemins suivants :

  • Sans Jaeger Agent : votre application envoie directement les données de traçage au backend de Managed Service for OpenTelemetry.

    Data reporting without Jaeger Agent

  • Avec Jaeger Agent : votre application envoie les données de traçage à un Jaeger Agent local, qui les transfère ensuite au backend.

    Data reporting with Jaeger Agent

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Un compilateur C++ avec GCC 4.9.2 ou une version ultérieure

  • CMake installé

  • Un endpoint obtenu depuis la console Managed Service for OpenTelemetry (consultez la section Obtenir un endpoint)

Obtenir un endpoint

Récupérez un endpoint depuis la console Managed Service for OpenTelemetry.

Nouvelle console

  1. Connectez-vous à la console Managed Service for OpenTelemetry.

  2. Dans le volet de navigation de gauche, cliquez sur Integration Center.

  3. Sur la page Integration Center, dans la section Open Source Frameworks, cliquez sur la carte Jaeger.

  4. Dans le panneau Jaeger, sélectionnez l'onglet Start Integration, puis choisissez la région dans laquelle vous souhaitez envoyer les données.

    Remarque

    Lorsque vous accédez à une région pour la première fois, les ressources sont automatiquement initialisées.

  5. Définissez les paramètres Connection Type et Export Protocol, puis copiez l'endpoint.

    Parameter Guidance
    Connection Type Si votre service s'exécute sur Alibaba Cloud dans la région sélectionnée, sélectionnez Alibaba Cloud VPC Network. Sinon, sélectionnez Public Network.
    Export Protocol Sélectionnez HTTP (recommandé) ou gRPC, en fonction du protocole pris en charge par votre client.

    Endpoint configuration in the new console

Ancienne console

  1. Connectez-vous à la console Managed Service for OpenTelemetry.

  2. Dans le volet de navigation de gauche, cliquez sur Cluster Configurations. Sur la page qui s'affiche, cliquez sur l'onglet Access point information.

  3. Dans la barre de navigation supérieure, sélectionnez la région dans laquelle vous souhaitez envoyer les données. Dans la section Cluster Information, activez l'option Show Token.

  4. Définissez le paramètre Client sur Jaeger. Dans la colonne Related Information, copiez un endpoint.

    Remarque

    Si votre application s'exécute dans un environnement de production Alibaba Cloud, utilisez un endpoint VPC. Sinon, utilisez un endpoint public.

    Endpoint configuration in the old console

Exécuter le projet d'exemple

Suivez les étapes ci-dessous pour télécharger le client C++ Jaeger, compiler le projet d'exemple, démarrer le Jaeger Agent et vérifier que les traces apparaissent dans la console.

Étape 1 : Télécharger et compiler jaeger-client-cpp

  1. Téléchargez et extrayez le code source :

    wget https://github.com/jaegertracing/jaeger-client-cpp/archive/master.zip && unzip master.zip
  2. Extrayez le package et accédez au répertoire. Ensuite, compilez le projet :

    Remarque

    La compilation nécessite CMake et GCC 4.9.2 ou une version ultérieure.

    mkdir build
    cd build
    cmake ..
    make

Étape 2 : Démarrer le Jaeger Agent

Téléchargez le Jaeger Agent et démarrez-le avec votre endpoint :

nohup ./jaeger-agent --reporter.grpc.host-port=tracing-analysis-dc-sz.aliyuncs.com:1883 --jaeger.tags=<endpoint>

Remplacez l'espace réservé suivant par votre valeur réelle :

Placeholder Description Example
<endpoint> L'endpoint obtenu depuis la console. Varie selon la région. tracing-analysis-dc-sz.aliyuncs.com:1883

Étape 3 : Exécuter l'exemple

Depuis le répertoire build, exécutez l'exemple inclus :

./app ../examples/config.yml

Lorsque le paramètre reporter.logSpans est défini sur true dans le fichier de configuration, l'application consigne chaque span dans la console.

Étape 4 : Vérifier les traces

Ouvrez la console Managed Service for OpenTelemetry et accédez à la page Applications. Cliquez sur le nom de l'application pour afficher ses données de traçage, y compris la topologie, les traces et l'analyse des transactions. Si les traces n'apparaissent pas après quelques minutes, vérifiez que le Jaeger Agent a démarré sans erreur et que l'endpoint est correct.

Instrumenter votre application

Pour intégrer le traçage Jaeger à votre propre application C++, créez un Tracer, configurez-le et créez des spans pour capturer les opérations.

Créer un Tracer

Un Tracer génère des spans qui représentent des unités de travail. Initialisez-le à partir d'un fichier de configuration YAML et enregistrez-le en tant que traceur global :

#include <jaegertracing/Tracer.h>
#include <yaml-cpp/yaml.h>

void setUpTracer(const char* configFilePath)
{
    auto configYAML = YAML::LoadFile(configFilePath);

    // Parse the Jaeger configuration from the YAML file.
    auto config = jaegertracing::Config::parse(configYAML);

    // Create a tracer with a service name and console logger.
    auto tracer = jaegertracing::Tracer::make(
        "example-service", config, jaegertracing::logging::consoleLogger());

    // Register the tracer as a global instance.
    opentracing::Tracer::InitGlobal(
        std::static_pointer_cast<opentracing::Tracer>(tracer));
}

Utilisez la configuration YAML suivante :

disabled: false
reporter:
  logSpans: true
sampler:
  type: const
  param: 1
Parameter Description
disabled Définissez sur false pour activer le traçage.
reporter.logSpans Définissez sur true pour consigner les spans dans la console.
sampler.type Stratégie d'échantillonnage. const échantillonne chaque trace.
sampler.param Paramètre d'échantillonnage. 1 signifie échantillonner toutes les traces ; 0 signifie ne rien échantillonner.

Créer des spans

Les spans représentent des opérations individuelles au sein d'une trace. Créez des spans racines pour les opérations de niveau supérieur et des spans enfants pour les sous-opérations :

#include <opentracing/tracer.h>

// Create a child span under an existing parent span.
void tracedSubroutine(const std::unique_ptr<opentracing::Span>& parentSpan)
{
    auto span = opentracing::Tracer::Global()->StartSpan(
        "tracedSubroutine",
        { opentracing::ChildOf(&parentSpan->context()) });
}

// Create a root span (no parent).
void tracedFunction()
{
    auto span = opentracing::Tracer::Global()->StartSpan("tracedFunction");
    tracedSubroutine(span);
}

Une fois que le Jaeger Agent est en cours d'exécution (voir l'étape Étape 2 : Démarrer le Jaeger Agent), les spans sont automatiquement envoyées à Managed Service for OpenTelemetry.