通过Jaeger为应用埋点并上报链路数据至可观测链路 OpenTelemetry 版后,可观测链路 OpenTelemetry 版即可开始监控应用,您可以查看应用拓扑、调用链路、异常事务、慢事务和SQL分析等一系列监控数据。本文介绍如何使用Jaeger客户端埋点并上报Node.js应用数据。
重要
为获得更丰富的功能、更先进的链路追踪能力,以及最佳使用体验,建议您使用OpenTelemetry协议将应用接入可观测链路 OpenTelemetry 版。
我们为您提供了详细的OpenTelemetry接入指南和最佳实践,帮助您快速上手可观测链路 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();
登录可观测链路 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');
});