Todos los productos
Search
Centro de documentos

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

Última actualización: Oct 09, 2026

Instrumente una aplicación en C++ con Jaeger para enviar datos de trazas a Managed Service for OpenTelemetry. Una vez completada la integración, podrá consultar mapas de topología, trazas distribuidas, transacciones anómalas y lentas, así como el análisis de SQL directamente desde la consola.

Importante

Se recomienda conectar su aplicación a Managed Service for OpenTelemetry mediante OpenTelemetry Protocol (OTLP). De este modo, obtendrá más funciones, capacidades de trazabilidad más avanzadas y la mejor experiencia de usuario. Alibaba Cloud ofrece instrucciones detalladas sobre cómo integrar OpenTelemetry con una aplicación, además de las mejores prácticas para ayudarle a comenzar rápidamente con Managed Service for OpenTelemetry. Para obtener más información, consulte Preparativos.

Funcionamiento del reporte de datos

Los datos de trazas viajan desde su aplicación hasta Managed Service for OpenTelemetry por una de estas dos rutas:

  • Sin Jaeger Agent: la aplicación envía los datos de trazas directamente al backend de Managed Service for OpenTelemetry.

    Data reporting without Jaeger Agent

  • Con Jaeger Agent: la aplicación envía los datos de trazas a un Jaeger Agent local, que los reenvía al backend.

    Data reporting with Jaeger Agent

Requisitos previos

Antes de empezar, compruebe que cuenta con lo siguiente:

  • Un compilador de C++ con GCC 4.9.2 o posterior.

  • CMake instalado.

  • Un endpoint obtenido desde la consola de Managed Service for OpenTelemetry (consulte Obtain an endpoint).

Obtención de un endpoint

Obtenga un endpoint desde la consola de Managed Service for OpenTelemetry.

Consola nueva

  1. Inicie sesión en la consola de Managed Service for OpenTelemetry.

  2. En el panel de navegación izquierdo, haga clic en Integration Center.

  3. En la página Integration Center, dentro de la sección Open Source Frameworks, haga clic en la tarjeta Jaeger.

  4. En el panel Jaeger, haga clic en la pestaña Start Integration y seleccione la región donde desea reportar los datos.

    Nota

    La primera vez que accede a una región, los recursos se inicializan automáticamente.

  5. Establezca Connection Type y Export Protocol, y copie el endpoint.

    Parámetro

    Guía

    Connection Type

    Si su servicio se ejecuta en Alibaba Cloud dentro de la región seleccionada, seleccione Alibaba Cloud VPC Network. En caso contrario, seleccione Public Network.

    Export Protocol

    Seleccione HTTP (recomendado) o gRPC, según el protocolo que admita su cliente.

    Endpoint configuration in the new console

Consola anterior

  1. Inicie sesión en la consola de Managed Service for OpenTelemetry.

  2. En el panel de navegación izquierdo, haga clic en Cluster Configurations. En la página que aparece, haga clic en la pestaña Access point information.

  3. En la barra de navegación superior, seleccione la región donde desea reportar los datos. En la sección Cluster Information, active Show Token.

  4. Establezca Client en Jaeger. En la columna Related Information, copie un endpoint.

    Nota

    Si su aplicación se ejecuta en un entorno de producción de Alibaba Cloud, utilice un endpoint de VPC. De lo contrario, use un endpoint público.

    Endpoint configuration in the old console

Ejecución del proyecto de ejemplo

Siga estos pasos para descargar el cliente de Jaeger para C++, compilar el proyecto de ejemplo, iniciar Jaeger Agent y comprobar que las trazas aparecen en la consola.

Paso 1: Descargar y compilar jaeger-client-cpp

  1. Descargue y extraiga el código fuente:

    wget https://github.com/jaegertracing/jaeger-client-cpp/archive/master.zip && unzip master.zip
  2. Extraiga el paquete y acceda al directorio. A continuación, compile el proyecto:

    Nota

    La compilación requiere CMake y GCC 4.9.2 o posterior.

    mkdir build
    cd build
    cmake ..
    make

Paso 2: Iniciar Jaeger Agent

Descargue Jaeger Agent e inícielo con su endpoint:

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

Reemplace el marcador de posición a continuación con su valor real:

Marcador de posición

Descripción

Ejemplo

<endpoint>

El endpoint obtenido desde la consola. Varía según la región.

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

Paso 3: Ejecutar el ejemplo

Desde el directorio build, ejecute el ejemplo incluido:

./app ../examples/config.yml

Cuando reporter.logSpans se establece en true dentro del archivo de configuración, la aplicación registra cada span en la consola.

Paso 4: Comprobar las trazas

Abra la consola de Managed Service for OpenTelemetry y vaya a la página Applications. Haga clic en el nombre de la aplicación para consultar sus datos de trazas, incluida la topología, las trazas y el análisis de transacciones. Si las trazas no aparecen después de unos minutos, compruebe que Jaeger Agent se inició sin errores y que el endpoint es correcto.

Instrumentación de su aplicación

Para integrar la trazabilidad de Jaeger en su propia aplicación en C++, cree un Tracer, configúrelo y genere spans que capturen las operaciones.

Creación de un Tracer

Un Tracer genera los spans que representan unidades de trabajo. Inicialícelo a partir de un archivo de configuración YAML y regístrelo como el 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));
}

Utilice la siguiente configuración YAML:

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

Parámetro

Descripción

disabled

Establézcalo en false para habilitar la trazabilidad.

reporter.logSpans

Establézcalo en true para registrar los spans en la consola.

sampler.type

Estrategia de muestreo. El valor const muestrea todas las trazas.

sampler.param

Parámetro de muestreo. El valor 1 indica que se muestrean todas las trazas; 0 significa que no se muestrea ninguna.

Creación de spans

Los spans representan operaciones individuales dentro de una traza. Cree spans raíz para las operaciones de nivel superior y spans secundarios para las suboperaciones:

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

Una vez que Jaeger Agent está en ejecución (consulte Step 2: Start the Jaeger Agent), los spans se reportan automáticamente a Managed Service for OpenTelemetry.