Tüm Ürünler
Search
Belge Merkezi

Managed Service for OpenTelemetry:Report Node.js application data

Son Güncelleme:Oct 06, 2026

Bir Node.js uygulaması çalıştırdığınızda, performans sorunlarını teşhis etmek için istek gecikme sürelerini, hata oranlarını ve hizmet bağımlılıklarını görmeniz gerekir. Managed Service for OpenTelemetry (Tracing Analysis), uygulamanızdan dağıtık izleme verilerini toplayıp görselleştirerek mikroservisler arasındaki darboğazları belirlemenize yardımcı olur.

Bu konu, izleme verilerini Tracing Analysis'e göndermek için bir Node.js uygulamasının Jaeger istemci kitaplığı ile nasıl donatılacağını adım adım gösterir.

Veri raporlamanın çalışma şekli

İzleme verileri Tracing Analysis arka ucuna şu iki yoldan biriyle ulaşır:

  • Doğrudan raporlama -- Uygulama, span'leri HTTP üzerinden bir toplayıcı uç noktasına gönderir. Ek altyapı gerekmez.

    不通过Jaeger Agent而直接上报

  • Aracı tabanlı raporlama -- Uygulama, span'leri UDP üzerinden yerel bir Jaeger aracısına gönderir; aracı bu verileri toplayıcıya iletir. UDP aktarımına veya yerel span önbelleklemeye ihtiyacınız varsa bu yolu kullanın.

    通过Jaeger Agent上报数据

Aşağıdaki adımlarda daha yaygın olan doğrudan raporlama yöntemini kullanıyoruz. Aracı tabanlı raporlama için bkz. jaeger-client-node belgeleri.

Önkoşullar

Başlamadan önce şunlara sahip olduğunuzdan emin olun:

  • Makinenizde kurulu Node.js

  • Projenize eklenmiş jaeger-client bağımlılığı:

      "dependencies": {
          "jaeger-client": "^3.12.0"
      }
  • Bir Jaeger veya Zipkin toplayıcı uç noktası (aşağıdaki "Toplayıcı uç noktasını alma" bölümüne bakın)

Toplayıcı uç noktasını alma

  1. Managed Service for OpenTelemetry konsolu üzerinde oturum açın.

  2. Sol gezinme bölmesinde Cluster Configurations öğesini tıklayın. Ardından Access point information sekmesini tıklayın.

  3. Üst gezinme çubuğunda bir bölge seçin. Cluster Information bölümünde Show Token seçeneğini etkinleştirin.

  4. Client bölümünde Jaeger veya Zipkin öğesini tıklayın.

  5. Related Information sütunundan uç noktayı kopyalayın.

    Jaeger/Zipkin access point information

Not

Uygulamanız bir Alibaba Cloud üretim ortamında çalışıyorsa Virtual Private Cloud (VPC) uç noktası kullanın. Aksi takdirde genel uç nokta kullanın. Zipkin için v1'i kullanmak üzere özel bir nedeniniz yoksa v2 uç noktasını kullanın.

Uygulamanızı donatma

1. Adım: İzleyiciyi başlatma

Jaeger istemcisini hizmet adınız, örnekleme stratejiniz ve toplayıcı uç noktanız ile yapılandırın.

Not

<endpoint> ifadesini önceki bölümde aldığınız uç nokta ile değiştirin. Bu uç nokta, Tracing Analysis konsolundaki Overview sayfasında da mevcuttur.

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

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

2. Adım: Bir izleyici örneği oluşturma

const tracer = initTracer(config);

3. Adım: Span'leri oluşturma ve tamamlama

Span, tek bir iş birimini temsil eder. Bir span başlatın, isteğe bağlı olarak etiketler ve günlükler ekleyin, ardından verileri göndermek için span'i tamamlayın.

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

4. Adım: Konsolda izlemeleri doğrulama

Tracing Analysis konsolunda oturum açın ve izlemeyi görüntüleyin.

Express ile eksiksiz örnek

Bu örnekte bir Express uygulaması donatılmaktadır. Gelen her istek bir span içine alınır ve /api rotası için bir günlük girişi kaydedilir.

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

<endpoint> ifadesini toplayıcı uç noktanızla değiştirin, ardından uygulamayı çalıştırın:

node app.js

Bir test isteği gönderin:

curl http://127.0.0.1:3000/api

Beklenen yanıt:

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

Yer tutucular

Kodu çalıştırmadan önce aşağıdaki yer tutucuyu gerçek değerinizle değiştirin:

Yer Tutucu Açıklama
<endpoint> Managed Service for OpenTelemetry konsolundan alınan Jaeger toplayıcı uç noktası. Yukarıdaki "Toplayıcı uç noktasını alma" bölümüne bakın.