本文介绍了如何通过OpenTelemetry将Node.js Express应用接入可观测链路 OpenTelemetry 版。
- 下载运行项目所需的依赖
cd auto-instrumentation
npm init -y
npm install express
npm install axios
- 下载 OpenTelemetry 自动埋点所需的依赖
npm install --save @opentelemetry/api
npm install --save @opentelemetry/auto-instrumentations-node
- 编写应用代码
- 以下是通过 Express 实现的简单应用
"use strict";
const axios = require("axios").default;
const express = require("express");
const app = express();
app.get("/", async (req, res) => {
const result = await axios.get("http://localhost:7001/hello");
return res.status(201).send(result.data);
});
app.get("/hello", async (req, res) => {
console.log("hello world!")
res.json({ code: 200, msg: "success" });
});
app.use(express.json());
app.listen(7001, () => {
console.log("Listening on http://localhost:7001");
});
- 运行
通过环境变量设置 OpenTelemetry 参数并运行应用:
- 请将 ${httpEndpoint} 替换为在“前提条件”中获取的 HTTP 接入点
- 请将 ${serviceName} 替换为您的应用名
export OTEL_TRACES_EXPORTER="otlp"
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="${httpEndpoint}"
export OTEL_NODE_RESOURCE_DETECTORS="env,host,os"
export OTEL_SERVICE_NAME="${serviceName}"
export NODE_OPTIONS="--require @opentelemetry/auto-instrumentations-node/register"
node main.js
说明: 有关 OpenTelemetry 环境变量的说明,请参见OpenTelemetry Node.js 自动埋点配置
- 访问应用
- 通过以下命令访问应用,或者直接在浏览器中访问改地址,即可生成调用链并上报至可观测链路 OpenTelemetry 版。
curl localhost:7001/hello
cd manual-instrumentation/otel-http-export
# 下载依赖
npm install
# 修改 main.js 中的 <HTTP-Endpoint>
# 运行
node main.js
浏览器中打开 http://localhost:7001 以访问应用
cd manual-instrumentation/otel-grpc-export
# 下载依赖
npm install
# 修改 main.js 中的 <gRPC-Endpoint> 和 <token>
# 运行
node main.js
浏览器中打开 http://localhost:7001 以访问应用