更新时间:2026-01-21 GMT+08:00
分享

通过OpenTelemetry Node.js接入APM

华为云APM兼容OpenTelemetry协议,支持直接接收通过OpenTelemetry SDK或Agent上报的链路追踪数据。本文将介绍如何通过OpenTelemetry Java 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

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

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

相关文档