
# 应用通过SkyWalking探针接入APM实现链路追踪指标监控
JAVA应用，Python应用，GO应用，Nodejs应用，PHP应用以及.Net应用支持通过SkyWalking探针接入APM实现链路追踪指标监控。
![](https://support.huaweicloud.com/usermanual-apm2/public_sys-resources/note_3.0-zh-cn.png)
当前支持的Region有：华北-北京四，华东-上海一，华东-上海二，华南-广州以及华北-乌兰察布二零一。
#### 前提条件
已创建应用，具体操作请参考[创建应用](https://support.huaweicloud.com/usermanual-apm2/apm_07_0101.html#apm_07_0101__section19801653566)。
#### 应用通过SkyWalking探针接入APM实现链路追踪指标监控
1. 登录[APM控制台](https://console.huaweicloud.com/apm2/)。
2. 在左侧导航栏中选择"链路追踪 \> 探针接入"，进入接入应用页面。
3. 选择区域和应用。
4. 选择接入类型"SkyWalking"。如果当前应用支持SkyWalking类型，则OpenTelemetry类型置灰，不支持选择。 
   图1接入SkyWalking类型   
   ![](https://support.huaweicloud.com/usermanual-apm2/zh-cn_image_0000002518176378.png "点击放大")
   
   
5. 根据应用类型选择接入对应的接入方式，按照步骤接入。请注意，同一个应用下的组件名称不能重复。 
   - JAVA应用接入。
     1. 下载SkyWalking。 前往[Skywalking官网](https://skywalking.apache.org/downloads/)，推荐下载 Java Agent 8.9.0 及以上版本，解压后Agent文件放至在Java进程有访问权限的目录。
        如需配置插件，在启动阶段将新的插件放进"/plugins"目录中，即可令插件生效。将插件从该目录删除，即可令其失效。
        日志文件默认输出到"/logs"目录中。
        
     
     2. 添加启动命令并重启应用。 接入Agent配置相关参数，有如下两种配置方式。
        - 在应用程序的启动命令行中配置。
          ```
          java -javaagent:skywalking-agent-path -Dskywalking.collector.backend_service=***.**.**.**:***** -Dskywalking.agent.authentication=******* -Dskywalking.agent.service_name=应用名称.组件名称.环境名称 -jar <yourApp>.jar
          ```
          
        
        - 在 agent/config/agent.config 中配置。
          ```
          collector.backend_service=100.79.29.107:11800
          agent.authentication=*****
          agent.service_name=应用名称.组件名称.环境名称
          //配置 javaagent 路径，并重新启动应用。
          java -javaagent:skywalking-agent-path -jar yourApp.jar
          ```
          
        
        
        如果您两种方式均进行配置，则只有在启动命令行中的配置生效。
        
      
   
   - Python应用接入。
     1. 前往[Skywalking官网](https://skywalking.apache.org/downloads/)下载SkyWalking。
     
     2. 通过PyPi安装Python代理模块。
        ```
        pip install "apache-skywalking"
        pip install "apache-skywalking[http]"
        pip install "apache-skywalking[kafka]"
        pip install apache-skywalking==0.7.0
        ```
        通过pip成功安装SkyWalking Python代理后，会在您的环境中安装一个命令行脚本sw-python。
        
     
     3. 接入Agent。 接入Agent需要配置接入点、令牌（Token）、应用名称三个参数，在您的启动文件中配置如下参数：
        ```
        from skywalking import agent, config
                  config.init(
                  collector_address='***.**.**.**:*****',
                  authentication='*******',
                  service_name='apply name',
                  )
                  agent.start()
        ```
        
     
     4. 重启应用。 目前，sw-pythonCLI提供了一个run选项，您可以使用该选项来执行您的应用程序。
        如果您之前运行gunicorn应用程序的命令是：
        ```
        gunicorn app.wsgi
        ```
        请将其改为：
        ```
        sw-python run gunicorn app.wsgi
        ```
        SkyWalking Python代理将很快与您的应用程序一起启动。
        
      
   
   - GO应用接入。
     1. 前往[Skywalking 官网](https://skywalking.apache.org/downloads/)下载SkyWalking。
     
     2. 安装SkyWalking go sdk，命令如下。
        ```
        go get -u github.com/SkyAPM/go2sky-plugins/sql
        ```
        
     
     3. 接入sdk。 在main.go文件导入sdk包。
        ```
        import (
                "github.com/SkyAPM/go2sky"
                "github.com/SkyAPM/go2sky/reporter"
              )
        ```
        在main方法里接入 sdk
        ```
        r, err := reporter.NewGRPCReporter(***.**.**.**:*****,
        reporter.WithCDS(0),
        reporter.WithAuthentication(******))
        if err != nil {
            log.Fatalf("new reporter error %v \n", err)
        }
        defer r.Close()
        tracer, err := go2sky.NewTracer(<应用名称.组件名称.环境名称>,
        go2sky.WithReporter(r))
        if err != nil {
            log.Fatalf("create tracer error %v \n", err)
        }
        go2sky.SetGlobalTracer(tracer)
        ```
        
      
   
   - Nodejs应用接入。
     1. 前往[Skywalking官网](https://skywalking.apache.org/downloads/)下载 SkyWalking。
     
     2. 使用官方推荐的新库来接入，原来的模块为：SkyAPM-nodejs，版本要求 NodeJS \>= 10，控制台输入命令：
        ```
        npm i skywalking-backend-js
        ```
        
     
     3. 接入Agent。 接入Agent需要配置接入点、令牌 Token、应用名称三个必填参数，在您的启动文件中配置如下参数：
        ```
        const { default: agent } = require('skywalking-backend-js');
              agent.start({
                serviceName: '应用名称.组件名称.环境名称',
                collectorAddress: '***.**.**.**:*****',
                authorization: '*********'
              });
        ```
        
     
     4. 重启应用。按照正常命令启动项目，无报错，数据正常上报即启动成功。如出现报错，请检查配置与版本；如无上报数据，请检查token与应用名称是否正确。
      
   
   - PHP应用接入。
     1. 前往[Skywalking官网](https://skywalking.apache.org/downloads/)下载SkyWalking。
        - 使用官方推荐的pecl.net安装，控制台输入命令：
          ```
          pecl install skywalking_agent
          ```
          
        
        - 或通过源代码的方式安装：
          ```
          git clone --recursive https://github.com/apache/skywalking-php.git
          cd skywalking-php
          phpize
          ./configure
          make
          make install
          ```
          
         
     
     2. 接入Agent。 修改php.ini文件如下配置项：
        ```
        [skywalking]
        extension=skywalking.so
        skywalking.app_code = 应用名称.组件名称.环境名称
        skywalking.enable = 1
        skywalking.version = 8
        skywalking.grpc = ***.**.**.***:*****
        skywalking.authentication = ******
        skywalking.error_handler_enable = 0
        ```
        
     
     3. 重启应用。
        - 方法一： 将修改php-fpm.conf的配置项中启动方式为daemonize = no
        
        - 方法二：使用nohup命令重启php-fpm：
          ```
          nohup /usr/local/services/php7/sbin/php-fpm > /usr/local/services/php7/log/php-fpm-output.log 2>&1 &
          ```
          
         
      
   
   - .Net应用接入。
     1. 前往[Skywalking官网](https://skywalking.apache.org/downloads/)下载SkyWalking。
        添加库SkyAPM .NET Core Agent。
        ```
        dotnet add package SkyAPM.Agent.AspNetCore
        ```
        
     
     2. 接入Agent。 下载配置文件生成工具：SkyAPM.DotNet.CLI。
        ```
        dotnet tool install -g SkyAPM.DotNet.CLI
        ```
        使用工具生成skyapm.json文件。
        ```
        dotnet skyapm config 应用名称.组件名称.环境名称 ***.**.**.***:*****
        ```
        修改skyapm.json中的Authentication。
        ```
        Authentication: "***********"
        ```
        在项目Properties下的launchSettings.json文件，添加环境变量：ASPNETCORE_HOSTINGSTARTUPASSEMBLIES 和 SKYWALKING__SERVICENAME。
        ```
        environmentVariables: {
              "SKYWALKING__SERVICENAME": "应用名称.组件名称.环境名称",
              "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "SkyAPM.Agent.AspNetCore"
              }
        ```
        
      
   
   
   
   
 
