文档

通过SkyWalking上报.NET应用数据

更新时间:

通过SkyWalking为应用埋点并上报链路数据至可观测链路 OpenTelemetry 版后,可观测链路 OpenTelemetry 版即可开始监控应用,您可以查看应用拓扑、调用链路、异常事务、慢事务和SQL分析等一系列监控数据。本文介绍如何使用SkyWalking .NET Core SDK埋点并上报应用数据。

前提条件

获取接入点信息

  1. 登录可观测链路 OpenTelemetry 版控制台

  2. 在左侧导航栏单击集群配置,然后在右侧页面单击接入点信息页签。

  3. 在页面顶部选择需要接入的地域,然后在集群信息区域打开显示Token开关。

  4. 客户端采集工具区域单击SkyWalking

    在下方表格的相关信息列中,获取接入点信息。

    SkyWalking接入点信息

    说明

    如果应用部署于阿里云生产环境,则选择阿里云VPC网络接入点,否则选择公网接入点。

背景信息

SkyWalking是一款广受欢迎的国产APM(Application Performance Monitoring,应用性能监控)产品,主要针对微服务、Cloud Native和容器化(Docker、Kubernetes、Mesos)架构的应用。SkyWalking的核心是一个分布式追踪系统。

示例Demo

示例Demo仓库地址:SkyWalking Demo

用SkyWalking为.NET应用埋点

  1. 安装.NET Agent。

    进入项目根目录,并执行以下命令。

    # 安装.NET Agent
    dotnet add package SkyAPM.Agent.AspNetCore
    
    # 添加环境变量
    export ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=SkyAPM.Agent.AspNetCore
    export SKYWALKING__SERVICENAME=<service-name>
  2. 配置.NET Agent属性。

    生成skyapm.json文件。

    • 方法1:使用skyapm命令行工具SkyAPM.DotNet.CLI生成属性配置文件。

    • dotnet tool install -g SkyAPM.DotNet.CLI
      
      # 环境变量设置,/path/to需要替换成您的.dotnet路径
      export PATH="$PATH:/path/to/.dotnet/tools/"             
      dotnet skyapm config <service-name> <endpoint>
    • 方法2:直接在项目根目录创建配置文件skyapm.json,并将以下内容复制到文件中。

    • {
        "SkyWalking": {
          "ServiceName": <service-name>,
          "Namespace": "",
          "HeaderVersions": [
            "sw8"
          ],
          "Sampling": {
            "SamplePer3Secs": -1,            
            "Percentage": -1.0,
            "LogSqlParameterValue": false
          },
          "Logging": {
            "Level": "Information",
            "FilePath": "logs/skyapm-{Date}.log"
          },
          "Transport": {
            "Interval": 3000,
            "ProtocolVersion": "v8",
            "QueueSize": 30000,
            "BatchSize": 3000,
            "gRPC": {
              "Servers": <endpoint>,
              "Authentication": <token>,
              "Timeout": 100000,
              "ConnectTimeout": 100000,
              "ReportTimeout": 600000
            }
          }
        }
      }

    属性说明:

    • 必填项

      • <service-name>:服务名称。

      • <endpoint>:前提条件中获取的接入点。

      • <token>:前提条件中获取的接入点鉴权令牌。

    • 可选项

      • SamplePer3Secs:每三秒采样数。

      • Percentage:采样百分比,例如10%采样则配置为10。

      • Logging:日志记录与调试。Level表示日志级别,FilePath表示日志文件保存的位置以及文件名称。

  3. 重启.NET项目。

    dotnet run
  1. 查看Agent本地日志记录。运行项目时,skyapm-<date>.log日志文件会在项目logs文件夹下生成,如果数据上报不成功,可以参考log文件进行调试和修改。

    image.png

参考信息

您可以参考以下命令从源码构建。

# 下载源代码
git clone https://github.com/SkyAPM/SkyAPM-dotnet.git

# 进入根目录
cd SkyAPM-dotnet/

# 切换到目标tag
git checkout [tagname]

git submodule init
git submodule update

dotnet restore

dotnet build src/SkyApm.Transport.Grpc.Protocol
dotnet build skyapm-dotnet.sln

常见问题

无法使用dotnet-skyapm工具创建skyapm.json配置文件,报错如下:image.png

  • 解决方法一(推荐):dotnet-skyapm的作用只有一个,即生成skyapm-dotnet agent的属性配置文件,您可以直接手动创建一个skyapm.json,并按照上文中的方式配置属性。

  • 解决方法二:使用dotnet 6.0。

  • 本页导读 (1)
文档反馈