
# 使用OpenTelemetry上报Node.js应用数据
华为云APM兼容OpenTelemetry协议，支持直接接收通过OpenTelemetry SDK或Agent上报的链路追踪数据。本文介绍如何使用OpenTelemetry方式，将Node.js语言的应用接入APM，并上报链路追踪指标数据。
#### 限制条件
使用node.js 14及以上版本。
#### 环境准备
1. 准备插件/工具：node、npm。
2. 安装，命令如下：
   ```
   curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
   \. "$HOME/.nvm/nvm.sh"
   nvm install 18
   ```
   
3. 环境验证，命令如下：
   ```
   node -v  
   npm -v
   ```
   
 
#### 示例demo
使用Express框架实现掷骰子接口。
1. 初始化项目，命令如下：
   ```
   npm init -y
   ```
   
2. 安装项目依赖，命令如下：
   ```
   npm install express
   ```
   
3. 编写业务代码。创建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}`);
   });
   ```
   
4. 运行，命令如下：
   ```
   node app.js & 
   curl http://localhost:8080/rolldice
   ```
   
 
#### 无侵入式安装
1. 安装依赖，命令如下： 
   ```
   npm install @opentelemetry/sdk-node \
     @opentelemetry/api \
     @opentelemetry/auto-instrumentations-node \
     @opentelemetry/sdk-metrics \
     @opentelemetry/sdk-trace-node
   ```
   
   
2. 对接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"
   ```
   
   
3. 启动，命令如下： 
   ```
   node app.js &
   curl http://localhost:8080/rolldice
   ```
   ![](https://support.huaweicloud.com/bestpractice-apm2/zh-cn_image_0000002543396161.png "点击放大")
   
   
4. 登录[APM控制台](https://auth.huaweicloud.com/authui/login.html?service=https://console.huaweicloud.com/console/#/login)。
5. 单击左侧![](https://support.huaweicloud.com/bestpractice-apm2/zh-cn_image_0000001542238060.png)，选择"管理与监管\> 应用性能管理 APM"，进入APM服务页面。
6. 在左侧导航栏选择"链路追踪 \> 指标"。
7. 在界面左侧树单击环境，单击"接口调用"，切换至接口调用页签，在接口调用页签可以查看接口调用的数据。 
   ![](https://support.huaweicloud.com/bestpractice-apm2/zh-cn_image_0000002511956226.png "点击放大")
   
   
8. 在左侧导航栏选择"链路追踪 \> 调用链"，查看调用链信息。 
   ![](https://support.huaweicloud.com/bestpractice-apm2/zh-cn_image_0000002511796236.png "点击放大")
   
   
 
