Todos os produtos
Search
Central de documentação

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

Última atualização: Jul 05, 2026

Ao executar uma aplicação Node.js, você precisa de visibilidade sobre a latência das requisições, as taxas de erro e as dependências entre serviços para diagnosticar problemas de desempenho. O Managed Service for OpenTelemetry (Tracing Analysis) coleta e visualiza rastreamentos distribuídos da sua aplicação para ajudar a identificar gargalos em microsserviços.

Este tópico orienta você na instrumentação de uma aplicação Node.js com a biblioteca de cliente Jaeger para relatar dados de rastreamento ao Tracing Analysis.

Como funciona o relato de dados

Os dados de rastreamento chegam ao backend do Tracing Analysis por um dos dois caminhos:

  • Relato direto -- A aplicação envia spans via HTTP para um endpoint de coletor. Nenhuma infraestrutura adicional é necessária.

    不通过Jaeger Agent而直接上报

  • Relato baseado em agente -- A aplicação envia spans para um agente Jaeger local via udp, que os encaminha ao coletor. Utilize este caminho quando precisar de transporte udp ou buffer local de spans.

    通过Jaeger Agent上报数据

As etapas abaixo utilizam o relato direto (a abordagem mais comum). Para relato baseado em agente, consulte a documentação do jaeger-client-node.

Pré-requisitos

Antes de começar, verifique se você tem:

  • Node.js instalado na sua máquina

  • A dependência jaeger-client adicionada ao seu projeto:

      "dependencies": {
          "jaeger-client": "^3.12.0"
      }
  • Um endpoint de coletor Jaeger ou Zipkin (consulte a seção "Obter o endpoint do coletor" abaixo)

Obter o endpoint do coletor

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

  2. No painel de navegação à esquerda, clique em Cluster Configurations. Em seguida, clique na aba Access point information.

  3. Na barra de navegação superior, selecione uma região. Na seção Cluster Information, ative a opção Show Token.

  4. Na seção Client, clique em Jaeger ou Zipkin.

  5. Copie o endpoint da coluna Related Information.

    Jaeger/Zipkin access point information

Nota

Se sua aplicação executa em um ambiente de produção da Alibaba Cloud, utilize um endpoint de Virtual Private Cloud (vpc). Caso contrário, use um endpoint público. Para Zipkin, prefira o endpoint v2, a menos que tenha um motivo específico para usar o v1.

Instrumentar sua aplicação

Etapa 1: Inicializar o tracer

Configure o cliente Jaeger com o nome do serviço, a estratégia de amostragem e o endpoint do coletor.

Nota

Substitua <endpoint> pelo endpoint obtido na seção anterior. Esse endpoint também está disponível na página Overview no console do Tracing Analysis.

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

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

Etapa 2: Criar uma instância do tracer

const tracer = initTracer(config);

Etapa 3: Criar e finalizar spans

Um span representa uma única unidade de trabalho. Inicie um span, anexe tags e logs opcionalmente e finalize-o para enviar os dados.

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();

Etapa 4: Verificar rastreamentos no console

Faça login no console do Tracing Analysis e visualize o rastreamento.

Exemplo completo com Express

Este exemplo instrumenta uma aplicação Express. Cada requisição recebida é encapsulada em um span, e uma entrada de log é registrada para a rota /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');
});

Substitua <endpoint> pelo seu endpoint de coletor e execute a aplicação:

node app.js

Envie uma requisição de teste:

curl http://127.0.0.1:3000/api

Resposta esperada:

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

Marcadores de posição

Substitua o seguinte marcador de posição pelo valor real antes de executar o código:

Marcador de posição

Descrição

<endpoint>

Endpoint do coletor Jaeger obtido no console do Managed Service for OpenTelemetry. Consulte a seção "Obter o endpoint do coletor" acima.