通过OpenTelemetry Node.js接入APM
华为云APM兼容OpenTelemetry协议,支持直接接收通过OpenTelemetry SDK或Agent上报的链路追踪数据。本文将介绍如何通过OpenTelemetry Java Node.js实现通过链路数据对接到APM。
限制条件
使用node.js 14及以上版本。
环境准备
- 准备插件/工具:node、npm。
- 安装,命令如下:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash \. "$HOME/.nvm/nvm.sh" nvm install 18
- 环境验证,命令如下:
node -v npm -v
示例demo
使用Express框架实现掷骰子接口。
- 初始化项目,命令如下:
npm init -y
- 安装项目依赖,命令如下:
npm install express
- 编写业务代码。创建app.js文件,内容如下:
const express = require('express'); const PORT = parseInt("8080"); const app = express(); app.get('/rolldice', (req, res) => { res.send(getRandomNumber(1, 6).toString()); }); function getRandomNumber(min, max) { return Math.floor(Math.random() * (max - min + 1) + min); } app.listen(PORT, () => { console.log(`Listening for requests on http://localhost:${PORT}`); }); - 运行,命令如下:
node app.js & curl http://localhost:8080/rolldice
无侵入式安装
- 安装依赖,命令如下:
npm install @opentelemetry/sdk-node \ @opentelemetry/api \ @opentelemetry/auto-instrumentations-node \ @opentelemetry/sdk-metrics \ @opentelemetry/sdk-trace-node
- 对接OpenTelemetry,命令如下:
export OTEL_TRACES_EXPORTER="otlp" export OTEL_EXPORTER_OTLP_PROTOCOL='grpc' export OTEL_EXPORTER_OTLP_ENDPOINT="接入地址" export OTEL_NODE_RESOURCE_DETECTORS="env,host,os" export OTEL_SERVICE_NAME="应用名称.组件名称.环境名称" export OTEL_EXPORTER_OTLP_HEADERS="Authentication=鉴权信息" export NODE_OPTIONS="--require @opentelemetry/auto-instrumentations-node/register"
- 启动,命令如下:
node app.js & curl http://localhost:8080/rolldice

- 登录APM控制台。
- 单击左侧
,选择“管理与监管> 应用性能管理 APM”,进入APM服务页面。 - 在左侧导航栏选择“链路追踪 > 指标”。
- 在界面左侧树单击环境,单击“接口调用”,切换至接口调用页签,在接口调用页签可以查看接口调用的数据。

- 在左侧导航栏选择“链路追踪 > 调用链”,查看调用链信息。
