SkyWalking 下载地址
Apache SkyWalking 官网
SkyWalking 极简入门

对于一个大型的几十个,几百个微服务构成的微服务架构系统,通常会遇到下面的一系列问题。
● 如何串联整个调用链路,快速定位问题?
● 如何澄清各个微服务之间的依赖关系?
● 如何进行各个微服务接口的性能分析?
● 如何追踪各个业务流程的调用处理顺序?

Skywalking是分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计,它是一款优秀的APM(Application Performance Management)工具。提供分布式追踪、性能指标分析、服务依赖分析、服务网格遥测分析、度量聚合和可视化一体化解决方案。

整个架构,分成上、下、左、右四部分
上部分 Agent :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器。目前支持 SkyWalking、Zikpin、Jaeger 等提供的 Tracing 数据信息。而我们目前采用的是,SkyWalking Agent 收集 SkyWalking Tracing 数据,传递给服务器。
下部分 SkyWalking OAP :负责接收 Agent 发送的 Tracing 数据信息,然后进行分析(Analysis Core) ,存储到外部存储器( Storage ),最终提供查询( Query )功能。
右部分 Storage :Tracing 数据存储。目前支持 ES、MySQL、Sharding Sphere、TiDB、H2 多种存储器。而我们目前采用的是 ES ,主要考虑是 SkyWalking 开发团队自己的生产环境采用 ES 为主。
左部分 SkyWalking UI :负责提供控台,查看链路等等。

​​​​Skywalking-Collector:链路数据归集器,数据可以保存在H2或ElasticSearch;
Skywalking-Webapp:web的可视化管理后台,可以查看归集的数据;
Skywalking-agent:探针,用来收集和推送数据到归集器;

Skywalking 数据存储方式
支持H2、Elasticsearch、MySQL、TiDB、InfluxDB、Postgresql、iotdb作为数据存储

1、下载安装
SkyWalking有两中版本,ES版本和非ES版。如果我们决定采用ElasticSearch作为存储,那么就下载es版本。

下载:Downloads | Apache SkyWalking 
点击右侧的Distribution选择想要的版本进行下载,如果这里没有你想要的版本,可以将页面下拉 ,选择 Archive repository

Archive repository【归档存储库】


注:Skywalking 在 8.8.0版本以后将agent单独拆分了出来,所以若要使用8.8.0版本以后的,需要下载apm和agent两个压缩包

2、修改数据存储方式,config/application.yml

storage:
  selector: ${SW_STORAGE:elasticsearch}

3、修改端口,webapp/webapp.yml
# 默认是8080,端口冲突的话,修改此端口

server:
  port: 8080

4、启动
Windows 下运行,双击startup.bat
注:如果Skywalking-Collector启动失败,排查java jdk版本问题,环境变量JAVA_HOME;

5、打开浏览器,地址栏输入http://localhost:8080
用户名:admin
密   码:admin

6、新建一个 WebAPI 项目
7、管理 NuGet 包(N)... 

SkyAPM.Agent.AspNetCore

8、修改启动配置,修改launchSettings.json文件
设置程序的环境变量,可以通过写在json文件里。添加两个变量,
ASPNETCORE_HOSTINGSTARTUPASSEMBLIES
SKYWALKING__SERVICENAME

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

9、新建 skyapm.json 文件

{
  "SkyWalking": {
    "ServiceName": "SkywalkingClient1", //当前应用出现在SkyWalking上的名称
    "Transport": {
      "gRPC": {
        "Servers": "localhost:11800" //本地SkyWalking服务器地址
      }
    }
  }
}

10、Startup.cs

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using SkyApm.Utilities.DependencyInjection;

namespace SkywalkingClient1
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddSkyApmExtensions();
            services.AddControllers();
        }

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
        }
    }
}

*

*

*
*

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐