通過Jaeger為應用埋點並上報鏈路資料至Managed Service for OpenTelemetry後,Managed Service for OpenTelemetry即可開始監控應用,您可以查看應用拓撲、調用鏈路、異常事務、慢事務和SQL分析等一系列監控資料。本文介紹如何使用Jaeger用戶端埋點並上報Node.js應用資料。
重要
為獲得更豐富的功能、更先進的鏈路追蹤能力,以及最佳使用體驗,建議您使用OpenTelemetry協議將應用接入Managed Service for OpenTelemetry。
我們為您提供了詳細的OpenTelemetry接入指南和最佳實務,協助您快速上手Managed Service for OpenTelemetry。更多資訊,請參見接入應用。
前提條件
在Node工程的Package中配置對Jaeger Client的依賴。
"dependencies": { "jaeger-client": "^3.12.0" }
背景資訊
操作步驟
初始化配置。
說明請將
<endpoint>
替換成前提條件中擷取的存取點資訊。const initTracer = require("jaeger-client").initTracer; const config = { serviceName: 'node-service', sampler: { type: "const", param: 1 }, reporter: { collectorEndpoint: "<endpoint>" }, };
建立Tracer執行個體對象。
const tracer = initTracer(config);
建立Span執行個體對象。
const span = tracer.startSpan("say-hello"); // 設定標籤(可選,支援多個) span.setTag("tagKey-01", "tagValue-01"); // 設定事件(可選,支援多個) span.log({event: "timestamp", value: Date.now()}); // 標記Span結束 span.finish();
登入Managed Service for OpenTelemetry控制台並查看調用鏈。
基於Express的完整樣本
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);
app.all('*', function (req, res, next) {
req.span = tracer.startSpan("say-hello");
next();
});
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');
});