Asp.Net Core使用Skywalking实现分布式链路追踪,你学会了吗?

云计算 分布式
Skywalking 是 Apache 基金会下面的一个开源 APM 项目,是一套(APM)分布式追踪系统,提供了很多数据存储列如:Mysql,H2,Elasticsearch7 等。其中APM 全称是应用性能监测软件,主要是用来处理以及追踪分布式系统中的应用程序的性能问题,从而快速找出问题的根源,进而可以让开发者定位问题从而提升应用程序性能。

介绍

Skywalking 是 Apache 基金会下面的一个开源 APM 项目,是一套(APM)分布式追踪系统,提供了很多数据存储列如:Mysql,H2,Elasticsearch7 等。其中APM 全称是应用性能监测软件,主要是用来处理以及追踪分布式系统中的应用程序的性能问题,从而快速找出问题的根源,进而可以让开发者定位问题从而提升应用程序性能。

当我们用很多服务相互调用时,各个服务单调用的顺序\时间性能怎么样?这些问题我们怎么监测,以前的方式是各个系统自己单独做日志,出了问题在一个一个服务的排查,有点刀耕火种的感觉。好在现在有Skywalking链路追踪系统,可以不用写任何代码,就追踪到各个服务间的调用关系和性能状态等。

ASP.NET Core 集成

1、安装Skywalking,搭建好后的Skywalking服务器地址为:127.0.0.1:11800

2、新建项目SkyWalkingA,为项目添加NuGet程序包SkyAPM.Agent.AspNetCore的引用

3、在项目根目录添加skyapm.json文件

{
  "SkyWalking": {
    "ServiceName": "WebApplication4",
    "Namespace": "",
    "HeaderVersions": [
      "sw6"
    ],
    "Sampling": {
      "SamplePer3Secs": -1,
      "Percentage": -1.0
    },
    "Logging": {
      "Level": "Debug",
      "FilePath": "logs/skyapm-{Date}.log"
    },
    "Transport": {
      "Interval": 3000,
      "ProtocolVersion": "v6",
      "QueueSize": 30000,
      "BatchSize": 3000,
      "gRPC": {
        "Servers": "127.0.0.1:11800",
        "Timeout": 10000,
        "ConnectTimeout": 10000,
        "ReportTimeout": 600000
      }
    }
  }
}


4、打开launchSettings.json文件,在其中的环境变量中加入 "SKYWALKING__SERVICENAME"

{
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:20467",
      "sslPort": 0
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "api/values",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "SKYWALKING__SERVICENAME": "WebApplication4",
        "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "SkyAPM.Agent.AspNetCore"
      }
    },
    "WebApplication4": {
      "commandName": "Project",
      "launchBrowser": true,
      "launchUrl": "api/values",
      "applicationUrl": "http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "SKYWALKING__SERVICENAME": "WebApplication4",
        "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "SkyAPM.Agent.AspNetCore"
      }
    }
  }
}

5、新建项目SkyWalkingB,重复上面步骤2、3、4

在A项目访问B项目

// GET api/values
        [HttpGet]
        public async Task<ActionResult<IEnumerable<string>>> Get()
        {
            var client = new HttpClient();
            await client.GetStringAsync("http://localhost:20467/api/values/1");
            await client.GetStringAsync("http://localhost:20467/api/values");


            return new string[] { "value1", "value2" };
        }

跑起来,可以看到对应的链路调用关系。

图片图片

图片图片

源码地址:https://github.com/conanl5566/mydemo/tree/master/SkyWalking

责任编辑:武晓燕 来源: 程序员编程日记
相关推荐

2024-11-28 08:57:21

分布式链路Skywalking

2020-12-16 09:24:18

Skywalking分布式链路追踪

2024-02-28 09:07:58

链路聚合模式

2024-05-20 08:06:42

ASP接口服务

2024-10-09 07:40:43

2024-06-07 13:04:31

2024-08-21 08:09:17

2024-01-26 07:49:49

Go分布式链路

2022-06-21 07:51:15

云原生应用链路

2021-02-22 07:58:51

分布式链路追踪

2020-09-11 09:44:04

微服务分布式链路

2024-06-26 00:20:42

2023-11-21 08:25:09

2024-07-09 08:11:56

2022-06-16 07:50:35

数据结构链表

2024-02-02 11:03:11

React数据Ref

2024-12-06 10:54:17

国产分布式数据库

2024-03-28 12:20:17

2023-07-27 07:29:44

.NetMSIL工具

2024-09-06 07:29:05

点赞
收藏

51CTO技术栈公众号