All Products
Search
Document Center

Application Real-Time Monitoring Service:Laporkan data aplikasi Node.js

Last Updated:May 28, 2026

Saat menjalankan aplikasi Node.js, Anda memerlukan visibilitas terhadap latensi permintaan, laju error, dan dependensi layanan untuk mendiagnosis masalah kinerja. Managed Service for OpenTelemetry (Analisis Tracing) mengumpulkan dan memvisualisasikan jejak terdistribusi dari aplikasi Anda, membantu mengidentifikasi hambatan di seluruh layanan mikro.

Topik ini memandu Anda melalui proses instrumentasi aplikasi Node.js dengan pustaka klien Jaeger untuk melaporkan data jejak ke Analisis Tracing.

Cara pelaporan data bekerja

Data jejak mencapai backend Analisis Tracing melalui salah satu dari dua jalur berikut:

  • Pelaporan langsung — Aplikasi mengirimkan rentang melalui HTTP ke titik akhir kolektor. Tidak diperlukan infrastruktur tambahan.

    不通过Jaeger Agent而直接上报

  • Pelaporan berbasis agen — Aplikasi mengirimkan rentang ke agen Jaeger lokal melalui UDP, yang kemudian meneruskannya ke kolektor. Gunakan jalur ini jika Anda memerlukan transport UDP atau buffering rentang lokal.

    通过Jaeger Agent上报数据

Langkah-langkah di bawah ini menggunakan pelaporan langsung (pendekatan yang lebih umum). Untuk pelaporan berbasis agen, lihat dokumentasi jaeger-client-node.

Prasyarat

Sebelum memulai, pastikan Anda telah:

  • Node.js telah terinstal di komputer Anda.

  • Menambahkan dependensi jaeger-client ke proyek Anda:

      "dependencies": {
          "jaeger-client": "^3.12.0"
      }
  • Memiliki titik akhir kolektor Jaeger atau Zipkin (lihat bagian "Dapatkan titik akhir kolektor" di bawah).

Dapatkan titik akhir kolektor

  1. Masuk ke Konsol Managed Service for OpenTelemetry.

  2. Di panel navigasi sebelah kiri, klik Cluster Configurations. Lalu, klik tab Access point information.

  3. Di bilah navigasi atas, pilih wilayah. Di bagian Cluster Information, aktifkan Show Token.

  4. Di bagian Client, klik Jaeger atau Zipkin.

  5. Salin titik akhir dari kolom Related Information.

    Jaeger/Zipkin access point information

Catatan

Jika aplikasi Anda berjalan di lingkungan produksi Alibaba Cloud, gunakan titik akhir Virtual Private Cloud (VPC). Jika tidak, gunakan titik akhir publik. Untuk Zipkin, gunakan titik akhir v2 kecuali Anda memiliki alasan khusus untuk menggunakan v1.

Instrumentasi aplikasi Anda

Langkah 1: Inisialisasi tracer

Konfigurasikan klien Jaeger dengan nama layanan, strategi pengambilan sampel, dan titik akhir kolektor.

Catatan

Ganti <endpoint> dengan titik akhir yang Anda peroleh pada bagian sebelumnya. Titik akhir tersebut juga tersedia di halaman Overview di Konsol Analisis Tracing.

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

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

Langkah 2: Buat instans tracer

const tracer = initTracer(config);

Langkah 3: Buat dan selesaikan rentang

Rentang merepresentasikan satu unit pekerjaan. Mulai sebuah rentang, opsional tambahkan tag dan log, lalu selesaikan untuk mengirimkan datanya.

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

// Lampirkan metadata sebagai tag pasangan kunci-nilai (muncul di tampilan detail jejak)
span.setTag("tagKey-01", "tagValue-01");

// Catat entri log berstempel waktu (muncul di timeline log rentang)
span.log({event: "timestamp", value: Date.now()});

// Selesaikan rentang untuk mengirimnya ke kolektor
span.finish();

Langkah 4: Verifikasi jejak di konsol

Masuk ke Konsol Analisis Tracing dan lihat jejak tersebut.

Contoh lengkap dengan Express

Contoh ini menginstrumentasi aplikasi Express. Setiap permintaan masuk dibungkus dalam sebuah rentang, dan entri log dicatat untuk rute /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: mulai rentang untuk setiap permintaan masuk
app.all('*', function (req, res, next) {
    req.span = tracer.startSpan("say-hello");
    next();
});

// Penanganan rute: catat stempel waktu dan selesaikan rentang
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');
});

Ganti <endpoint> dengan titik akhir kolektor Anda, lalu jalankan aplikasi:

node app.js

Kirim permintaan uji:

curl http://127.0.0.1:3000/api

Tanggapan yang diharapkan:

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

Placeholder

Ganti placeholder berikut dengan nilai aktual Anda sebelum menjalankan kode:

PlaceholderDeskripsi
<endpoint>Titik akhir kolektor Jaeger yang diperoleh dari Konsol Managed Service for OpenTelemetry. Lihat bagian "Dapatkan titik akhir kolektor" di atas.