更新时间:2025-09-28 GMT+08:00
分享

快速接入Agent

前提条件

  • 部署APM Agent时,必须确保接入APM的机器与APM服务网络连通,Agent才能正常工作。可使用“curl -kv”命令测试目标机器与APM服务器网络是否连通。例如,以检查华北-北京四区域,且接入方式选择“增强型探针”的连通性为例,请登录应用所部署的机器,并输入命令curl -kv 100.125.12.108:41333,其他区域地址请参考探针接入地址
  • Node.js语言,支持增强型探针、Skywalking和OpenTelemetry。

操作步骤

  1. 登录APM控制台
  2. 单击左侧,选择“管理与监管 > 应用性能管理 APM”,进入APM服务页面。
  3. 在左侧导航栏中选择“应用监控 > 应用列表”。
  4. 单击“接入应用”,进入接入应用页面。

    图1 接入应用

  5. 选择“区域”和“应用”。单击“创建应用”,弹出“创建应用”弹窗,可以具体操作参见创建应用

    图2 基础信息

  6. “接入方式”选择增强型探针、Skywalking或者OpenTelemetry。
  7. “服务端语言”选择Node.js。

    图3 接入方式

  8. 使用PuTTY等远程登录工具,登录待安装Agent的Linux操作系统主机,并以root权限执行相关命令。
  9. 根据应用类型选择接入对应的接入方式,按照步骤接入。

    • 增强型探针

      如果接入方式选择“增强型探针”,则数据接入方式选择“无修改接入”;

      如果接入方式选择其他类型的探针,则数据接入方式选择“自定义接入”。

      表1 支持的环境参数列表

      环境变量

      入参

      描述

      选项

      APM_APP_NAME

      appName

      组件名称,一个组件可以包含多个环境。不能重复,如果要重复,使用APM_INSTANCE_NAME区分。

      必填

      APM_AK

      AK

      APM访问密钥ID(AK)。

      必填

      APM_SK

      SK

      APM秘密访问密钥(SK)。

      必填

      APM_MASTER_ADDRESS

      masterAddress

      APM探针的接入地址。

      必填

      APM_BUSINESS

      business

      应用:代表一个逻辑单元,是一个全局概念,各个region都可以看到相同的应用信息,比如一个租户下面比较独立的功能模块可以定义为一个应用。如果填写,则必须提前创建该应用。如果为空,则代表默认应用。

      选填

      APM_SUB_BUSINESS

      subBusiness

      子应用:在一个应用下面可以创建多个子应用,主要起文件夹和管理的功能,子应用为全局概念,当前最多支持三层子应用,子应用格式为:sub1/sub2/sub3

      选填

      APM_ENV

      env

      环境:一个组件由于部署不同的配置参数,会形成的多个环境。

      选填

      APM_ENV_TAG

      envTag

      环境标签:是在环境上的一个属性,多个环境可能具有相同的标签,可以通过标签对环境进行过滤。

      选填

      APM_INSTANCE_NAME

      instanceName

      实例:是环境下的一个进程,名称由主机名+ip+实例名称组成。

      选填

      • 无修改接入
        1. 请到“系统管理 > 访问密钥”界面,获取JavaAgent所需的AK、SK。获取“访问密钥”的方法,请参见访问密钥
        2. 使用PuTTY等远程登录工具,登录待安装Agent的Linux操作系统主机,并以root或service权限执行相关命令。执行安装命令的用户需要和启动应用的用户保持一致。
        3. 接入命令如下:
          npm install -S apm-nodejs-agent && APM_APP_NAME=apm-nodejs-demo APM_AK=*** APM_SK=*** APM_MASTER_ADDRESS=https://**.**.**.**:*** node -r apm-nodejs-agent/tracing app.js; history -cw; history -r
      • 自定义接入
        1. 使用PuTTY等远程登录工具,登录待安装Agent的Linux操作系统主机,并以root或service权限执行相关命令。执行安装命令的用户需要和启动应用的用户保持一致。
        2. 安装apm-nodejs-agent,命令如下:
          npm install -S apm-nodejs-agent
        3. 添加agent启动和配置项,示例如下:
              const process = require('process');
              const agent = require('apm-nodejs-agent');
          
              agent.start({
                appName: 'apm-nodejs-demo',
                masterAddress: 'https://**.**.**.**:***',
                AK: '***',
                SK: '***'
              }).then(()=>{
                console.log('Agent trace start');
              }).catch((error)=>{
                console.log('Error agent trace',error);
              })
          
              process.on('SIGTERM',()=>{
                agent.stop();
              })
    • OpenTelemetry
      • 侵入式接入
        1. 添加依赖。
          npm install --save @grpc/grpc-js @opentelemetry/exporter-trace-otlp-grpc @opentelemetry/instrumentation-express @opentelemetry/instrumentation-http @opentelemetry/resources @opentelemetry/sdk-node @opentelemetry/sdk-trace-base @opentelemetry/semantic-conventions
        2. 对接OpenTelemetry,在 express入口文件业务代码前面加上如下内容。
              const { NodeSDK } = require("@opentelemetry/sdk-node");
              const { Resource } = require("@opentelemetry/resources");
              const { OTLPTraceExporter } = require("@opentelemetry/exporter-trace-otlp-grpc");
              const { ExpressInstrumentation } = require("@opentelemetry/instrumentation-express");
              const { HttpInstrumentation } = require("@opentelemetry/instrumentation-http");
              const { SemanticResourceAttributes } = require("@opentelemetry/semantic-conventions");
              const { BatchSpanProcessor } = require("@opentelemetry/sdk-trace-base");
              const grpc = require("@grpc/grpc-js");
          
                const service_name = "应用名称.组件名称.环境名称";
                const endpoint = "http://**.**.**.***:****";
                const authentication = "********";
          
          
              const metadata = new grpc.Metadata();
              metadata.set("Authentication", authentication);
              const exporter = new OTLPTraceExporter({url: endpoint, metadata});
              const sdk = new NodeSDK({
                spanProcessor: new BatchSpanProcessor(exporter),
                resource: new Resource({
                  [SemanticResourceAttributes.HOST_NAME]: require("os").hostname(), // your host name
                  [SemanticResourceAttributes.SERVICE_NAME]: service_name,
                }),
                instrumentations: [HttpInstrumentation, ExpressInstrumentation],
              });
              sdk.start();
          
      • 非侵入式接入

        参考 官方网站

    • Skywalking
      1. 下载Skywalking。使用官方推荐的新库来接入,原来的模块为:SkyAPM-nodejs,版本要求NodeJS >= 10,控制台输入如下命令:
        npm i skywalking-backend-js
      2. 接入Agent。接入Agent需要配置 接入点、令牌Token、应用名称三个必填参数,在您的启动文件中配置如下参数:
        const { default: agent } = require('skywalking-backend-js');
              agent.start({
                serviceName: '应用名称.组件名称.环境名称',
                collectorAddress: '**.**.**.**:****',
                authorization: 'ZvL3****qe'
              });
      3. 重启应用。按照正常命令启动项目,无报错,数据正常上报即启动成功。如出现报错,请检查配置与版本;如无上报数据,请检查token与应用名称是否正确。

相关文档