Todos os produtos
Search
Central de documentação

Application Real-Time Monitoring Service:Use Jaeger to report C++ application data

Última atualização: Sep 21, 2026

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

Importante

Recomendamos conectar sua aplicação ao Managed service for OpenTelemetry por meio do OpenTelemetry Protocol (OTLP). Dessa forma, você terá acesso a mais recursos, capacidades de rastreamento mais avançadas e a melhor experiência de uso. A Alibaba Cloud fornece instruções detalhadas sobre como integrar o OpenTelemetry a uma aplicação, bem como as melhores práticas de uso do OpenTelemetry 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 de dois caminhos:

  • Sem Jaeger Agent: a aplicação envia os dados de rastreamento diretamente ao backend do Managed service for OpenTelemetry.

    Data reporting without Jaeger Agent

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

    Data reporting with Jaeger Agent

Pré-requisitos

Antes de começar, certifique-se de que você possui:

  • Um compilador C++ com GCC 4.9.2 ou posterior

  • 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 em o cartão Jaeger.

  4. No painel Jaeger, clique em a aba Start Integration e selecione a região onde deseja reportar 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, em seguida, copie o endpoint.

    Parâmetro

    Orientação

    Connection Type

    Se o seu service é executado 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, de acordo com o protocolo compatível com o 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 em a aba Access point information.

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

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

    Nota

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

    Endpoint configuration in the old console

Execute o projeto de exemplo

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

Etapa 1: Baixe e compile o jaeger-client-cpp

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

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

    Nota

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

    mkdir build
    cd build
    cmake ..
    make

Etapa 2: Iniciar o Jaeger Agent

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

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

Substitua o placeholder a seguir pelo seu valor real:

Placeholder

Descrição

Exemplo

<endpoint>

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

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

Etapa 3: Execute 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: Verifique os rastreamentos

Abra o console do Managed service for OpenTelemetry e acesse a página Applications. Clique em o nome da aplicação para visualize os dados de rastreamento, incluindo topologia, traces 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.

Crie 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 ative o rastreamento.

reporter.logSpans

Defina como true para registrar spans no console.

sampler.type

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

sampler.param

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

Crie spans

Spans representam operações individuais dentro de um trace. Crie spans raiz para operações de nível superior e spans filhos para sub-operaçõ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);
}

Após o Jaeger Agent estar em execução (consulte Etapa 2: Iniciar o Jaeger Agent), os spans são reportados automaticamente ao Managed service for OpenTelemetry.