Todos los productos
Search
Centro de documentos

Application Real-Time Monitoring Service:Report Node.js application data

Última actualización: Sep 05, 2026

Al ejecutar una aplicación Node.js, es necesario tener visibilidad sobre la latencia de las solicitudes, las tasas de error y las dependencias entre servicios para diagnosticar problemas de rendimiento. Managed Service for OpenTelemetry (Tracing Analysis) recopila y visualiza trazas distribuidas de su aplicación, lo que le permite identificar cuellos de botella en sus microservices.

Este tema explica cómo instrumentar una aplicación Node.js con la biblioteca cliente de Jaeger para reportar datos de traza a Tracing Analysis.

Cómo funciona el reporte de datos

Los datos de traza llegan al backend de Tracing Analysis por una de dos rutas:

  • Reporte directo: la aplicación envía spans mediante HTTP a un endpoint de recopilador. No se requiere infraestructura adicional.

    不通过Jaeger Agent而直接上报

  • Reporte basado en agente: la aplicación envía spans a un agente local de Jaeger mediante UDP, y este los reenvía al recopilador. Utilice esta ruta cuando necesite transporte UDP o almacenamiento temporal local de spans.

    通过Jaeger Agent上报数据

Los pasos siguientes utilizan el reporte directo, que es el enfoque más común. Para el reporte basado en agente, consulte la documentación de jaeger-client-node.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

  • Node.js instalado en su computadora

  • La dependencia jaeger-client agregada a su proyecto:

      "dependencies": {
          "jaeger-client": "^3.12.0"
      }
  • Un endpoint de recopilador de Jaeger o Zipkin (consulte la sección "Obtener el endpoint del recopilador" a continuación)

Obtener el endpoint del recopilador

  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. Luego, haga clic en la pestaña Access point information.

  3. En la barra de navegación superior, seleccione una región. En la sección Cluster Information, active Show Token.

  4. En la sección Client, haga clic en Jaeger o Zipkin.

  5. Copie el endpoint de la columna Related Information.

    Jaeger/Zipkin access point information

Nota

Si su aplicación se ejecuta en un entorno de producción de Alibaba Cloud, utilice un endpoint de Virtual Private Cloud (VPC). De lo contrario, use un endpoint público. Para Zipkin, utilice el endpoint v2 a menos que tenga un motivo específico para usar v1.

Instrumentar su aplicación

Paso 1: Inicializar el tracer

Configure el cliente Jaeger con el nombre de su servicio, la estrategia de muestreo y el endpoint del recopilador.

Nota

Reemplace <endpoint> con el endpoint que obtuvo en la sección anterior. El endpoint también está disponible en la página Overview de la consola de Tracing Analysis.

const initTracer = require("jaeger-client").initTracer;

const config = {
    serviceName: 'node-service',
    sampler: {
        type: "const",
        param: 1
    },
    reporter: {
        collectorEndpoint: "<endpoint>"
    },
};

Paso 2: Crear una instancia de tracer

const tracer = initTracer(config);

Paso 3: Crear y finalizar spans

Un span representa una unidad individual de trabajo. Inicie un span, asocie etiquetas y registros de forma opcional y luego finalícelo para enviar los datos.

const span = tracer.startSpan("say-hello");

// Attach metadata as key-value tags (appears in the trace detail view)
span.setTag("tagKey-01", "tagValue-01");

// Record a timestamped log entry (appears in the span's log timeline)
span.log({event: "timestamp", value: Date.now()});

// Finish the span to flush it to the collector
span.finish();

Paso 4: Verificar las trazas en la consola

Inicie sesión en la consola de Tracing Analysis y consulte la traza.

Ejemplo completo con Express

Este ejemplo instrumenta una aplicación Express. Cada solicitud entrante se envuelve en un span y se registra una entrada de registro para la ruta /api.

const express = require("express");
const initTracer = require("jaeger-client").initTracer;
const app = express();

const config = {
    serviceName: 'node-service',
    sampler: {
        type: "const",
        param: 1
    },
    reporter: {
        collectorEndpoint: "<endpoint>"
    },
};
const tracer = initTracer(config);

// Middleware: start a span for every incoming request
app.all('*', function (req, res, next) {
    req.span = tracer.startSpan("say-hello");
    next();
});

// Route handler: log a timestamp and finish the span
app.get("/api", function (req, res) {
    const span = req.span;
    span.log({event: "timestamp", value: Date.now()});
    req.span.finish();
    res.send({code: 200, msg: "success"});
});

app.listen(3000, '127.0.0.1', function () {
    console.log('start');
});

Reemplace <endpoint> con su endpoint de recopilador y luego ejecute la aplicación:

node app.js

Envíe una solicitud de prueba:

curl http://127.0.0.1:3000/api

Respuesta esperada:

{"code":200,"msg":"success"}

Marcadores de posición

Reemplace el siguiente marcador de posición con su valor real antes de ejecutar el código:

Marcador de posición

Descripción

<endpoint>

Endpoint del recopilador de Jaeger obtenido desde la consola de Managed Service for OpenTelemetry. Consulte la sección "Obtener el endpoint del recopilador" anterior.