Todos os produtos
Search
Central de documentação

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

Última atualização: Oct 16, 2026

Instrumente uma aplicação C++ com o Jaeger para enviar dados de rastreamento ao Managed Service for OpenTelemetry. Após a integração, visualize mapas de topologia, rastreamentos distribuídos, transações anômalas e lentas, além da análise de SQL no console.

Importante

Recomendamos conectar sua aplicação ao Managed Service for OpenTelemetry usando o OpenTelemetry Protocol (OTLP). Essa abordagem oferece mais recursos, capacidades avançadas de rastreamento e a melhor experiência de usuário. A Alibaba Cloud fornece instruções detalhadas sobre como integrar o OpenTelemetry a uma aplicação e as melhores práticas de uso para ajudar você a começar rapidamente com o Managed Service for OpenTelemetry. Para mais informações, consulte Preparações.

Como funciona o envio de dados

Os dados de rastreamento fluem da sua aplicação para o Managed Service for OpenTelemetry por um dos dois caminhos:

  • Sem o Jaeger Agent: Sua aplicação envia os dados de rastreamento diretamente para o backend do Managed Service for OpenTelemetry.

    Data reporting without Jaeger Agent

  • Com o Jaeger Agent: Sua aplicação envia os dados de rastreamento para um Jaeger Agent local, que os encaminha para o backend.

    Data reporting with Jaeger Agent

Pré-requisitos

Antes de começar, certifique-se de ter:

  • Um compilador C++ com GCC 4.9.2 ou superior

  • CMake instalado

  • Um endpoint obtido no console do Managed Service for OpenTelemetry (consulte Obter um endpoint)

Obter um endpoint

Obtenha um endpoint no console do Managed Service for OpenTelemetry.

Novo console

  1. Faça login no console do Managed Service for OpenTelemetry.

  2. No painel de navegação à esquerda, clique em Integration Center.

  3. Na página Integration Center, na seção Open Source Frameworks, clique no cartão Jaeger.

  4. No painel Jaeger, clique na aba Start Integration e selecione a região onde deseja relatar os dados.

    Nota

    Ao acessar uma região pela primeira vez, os recursos são inicializados automaticamente.

  5. Defina Connection Type e Export Protocol e copie o endpoint.

    Parâmetro

    Orientação

    Connection Type

    Se seu service executa na Alibaba Cloud na região selecionada, selecione Alibaba Cloud VPC Network. Caso contrário, selecione Public Network.

    Export Protocol

    Selecione HTTP (recomendado) ou gRPC, dependendo do protocolo suportado pelo seu cliente.

    Endpoint configuration in the new console

Console antigo

  1. Faça login no console do Managed Service for OpenTelemetry.

  2. No painel de navegação à esquerda, clique em Cluster Configurations. Na página exibida, clique na aba Access point information.

  3. Na barra de navegação superior, selecione a região onde deseja relatar os dados. Na seção Cluster Information, ative Show Token.

  4. Defina Client como Jaeger. Na coluna Related Information, copie um endpoint.

    Nota

    Se sua aplicação executa em um ambiente de produção da Alibaba Cloud, use um endpoint de VPC. Caso contrário, utilize um endpoint público.

    Endpoint configuration in the old console

Executar o projeto de exemplo

Siga estas etapas para baixar o cliente Jaeger C++, compilar o projeto de exemplo, iniciar o Jaeger Agent e verificar se os rastreamentos aparecem no console.

Etapa 1: Baixar e compilar o jaeger-client-cpp

  1. Baixe e extraia o código-fonte:

    wget https://github.com/jaegertracing/jaeger-client-cpp/archive/master.zip && unzip master.zip
  2. Extraia o pacote e entre no diretório. Em seguida, compile o projeto:

    Nota

    A compilação requer CMake e GCC 4.9.2 ou superior.

    mkdir build
    cd build
    cmake ..
    make

Etapa 2: Iniciar o Jaeger Agent

Baixe o Jaeger Agent e inicie-o com seu endpoint:

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

Substitua o seguinte espaço reservado pelo valor real:

Espaço reservado

Descrição

Exemplo

&lt;endpoint&gt;

O endpoint obtido no console. Varia conforme a região.

tracing-analysis-dc-sz.aliyuncs.com:1883

Etapa 3: Executar o exemplo

No diretório build, execute o exemplo incluído:

./app ../examples/config.yml

Quando reporter.logSpans está definido como true no arquivo de configuração, a aplicação registra cada span no console.

Etapa 4: Verificar rastreamentos

Abra o console do Managed Service for OpenTelemetry e acesse a página Applications. Clique no nome da aplicação para visualizar seus dados de rastreamento, incluindo topologia, rastreamentos e análise de transações. Se os rastreamentos não aparecerem em alguns minutos, verifique se o Jaeger Agent foi iniciado sem erros e se o endpoint está correto.

Instrumentar sua aplicação

Para integrar o rastreamento Jaeger à sua própria aplicação C++, crie um Tracer, configure-o e crie spans para capturar operações.

Criar um Tracer

Um Tracer gera spans que representam unidades de trabalho. Inicialize-o a partir de um arquivo de configuração YAML e registre-o como o tracer 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));
}

Utilize a seguinte configuração YAML:

disabled: false
reporter:
  logSpans: true
sampler:
  type: const
  param: 1

Parâmetro

Descrição

disabled

Defina como false para ativar o rastreamento.

reporter.logSpans

Defina como true para registrar spans no console.

sampler.type

Estratégia de amostragem. const amostra todos os rastreamentos.

sampler.param

Parâmetro de amostragem. 1 significa amostrar todos os rastreamentos; 0 significa não amostrar nenhum.

Criar spans

Spans representam operações individuais dentro de um rastreamento. Crie spans raiz para operações de nível superior e spans filhos para suboperações:

#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);
}

Depois que o Jaeger Agent estiver em execução (consulte Etapa 2: Iniciar o Jaeger Agent), os spans são relatados automaticamente ao Managed Service for OpenTelemetry.