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();
});
}
}
}
*
*
*
*