内容目录

  • 1.SkyWalking介绍
  • 2.Net6 接入Skywalking方法指引
  • 3.查看运行监控

1.SkyWalking介绍

1.1. SkyWalking介绍

skywalking是国产开源框架,一款分布式观察性分析平台和应用性能管理系统,提供分布式追踪,服务网格遥测分析,量度集合和可视化;对于一个大型的几十个,上百个微服务,skywalking能解决什么问题:
  1.串联整个调用链路,快速定位问题
  2.缕清各个微服务之间的关系
  3.进行各个微服务之间的性能分析
  4.跟踪整个业务流程的调用处理顺序

skywalking的主要功能特性
  1.多种监控手段,开源通过语言探针和service mesh获得监控的数据;
  2.支持多种语言自动探针,包括Java,net core等;
  3.轻量级
  4.模块化,ui,存储,集群管理多种机制可选
  5.支持告警

  1. Skywalking Agent:链路数据采集tracing(调用链数据)和metric(指标)信息并上报,上报通过HTTP或者gRPC方式发送数据到Skywalking Collector
  1. Skywalking Collector : 链路数据收集器,对agent传过来的tracing和metric数据进行整合分析通过Analysis Core模块处理并落入相关的数据存储中,同时会通过Query Core模块进行二次统计和监控告警
  2. Storage: Skywalking的存储,支持以ElasticSearch、Mysql、TiDB、H2等主流存储作为存储介质进行数据存储,H2仅作为临时演示单机用。

2.Net6 接入Skywalking方法指引

2.1 新建一个.NET6站点,安装Nuget包

SkyAPM.Agent.AspNetCore

2.2 Properties下launchSettings.json增加配置

"ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "SkyAPM.Agent.AspNetCore", //必须配置
 "SKYWALKING__SERVICENAME": "Service1" // 必须配置,在skywalking做标识,服务名称

或者在Program.cs增加配置环境变量

public static void Main(string[] args)
      {
	      //必须配置
          Environment.SetEnvironmentVariable("ASPNETCORE_HOSTINGSTARTUPASSEMBLIES", "SkyAPM.Agent.AspNetCore");
		  //必须配置,在skywalking做标识,服务名称
          Environment.SetEnvironmentVariable("SKYWALKING__SERVICENAME", "aaa-net6-webapi");

          System.Threading.ThreadPool.SetMinThreads(1024, 512);
          CreateHostBuilder(args).Build().Run();
      }

2.3 添加配置文件skyapm.json

在根目录生成skywalking.json文件,修改2个配置项,其他默认,将skyapm.json文件的属性”复制到输出目录“ 修改为 ”如果较新则复制”
{
  "SkyWalking": {
    "ServiceName": "Service1", //服务名称,同launchSettings.json SKYWALKING__SERVICENAME 一致
    "Namespace": "",
    "HeaderVersions": [
      "sw8"
    ],
    "Sampling": {
      "SamplePer3Secs": -1,
      "Percentage": -1.0
    },
    "Logging": {
      "Level": "Error",
      "FilePath": "logs\\skyapm-{Date}.log"
    },
    "Transport": {
      "Interval": 3000,
      "ProtocolVersion": "v8",
      "QueueSize": 30000,
      "BatchSize": 3000,
      "gRPC": {
        "Servers": "10.10.10.10:11800", //skywalking 服务器Ip,端口
        "Timeout": 10000,
        "ConnectTimeout": 10000,
        "ReportTimeout": 600000,
        "Authentication": ""
      }
    }
  }
}

2.4 在program.cs 的var app=builder.Build();之前增加 Skywalking相关配置

builder.Services.AddSkyApmExtensions(); //添加Skywalking相关配置

3.运行监控

3.1 运行测试的项目:net6.demo.web1

3.2 打开skywalking地址,https://sw-web.aaa.com/general 查看效果
这里,我们可以看到.NET Core应用的服务为 net6.demo.web1调用接口及使用时间