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.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Node.js telah terinstal di komputer Anda.
Menambahkan dependensi
jaeger-clientke 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
Masuk ke Konsol Managed Service for OpenTelemetry.
Di panel navigasi sebelah kiri, klik Cluster Configurations. Lalu, klik tab Access point information.
Di bilah navigasi atas, pilih wilayah. Di bagian Cluster Information, aktifkan Show Token.
Di bagian Client, klik Jaeger atau Zipkin.
Salin titik akhir dari kolom Related Information.

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.
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.jsKirim permintaan uji:
curl http://127.0.0.1:3000/apiTanggapan yang diharapkan:
{"code":200,"msg":"success"}Placeholder
Ganti placeholder berikut dengan nilai aktual Anda sebelum menjalankan kode:
| Placeholder | Deskripsi |
|---|---|
<endpoint> | Titik akhir kolektor Jaeger yang diperoleh dari Konsol Managed Service for OpenTelemetry. Lihat bagian "Dapatkan titik akhir kolektor" di atas. |

