skywalking 分布式链路追踪的介绍和集成Gateway网关

Skywalking 简介
接下来最后一个分享的是:skywalking 分布式链路追踪:
何为skywalking分布式链路追踪器:分布式链路跟踪是分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s)架构而设计;也就是说Skywalking是用于微服务的“跟踪" ;
对于一个大型的几十个、几百个微服务构成的微服务架构系统,通常会遇到下面一些问题,比如:
如何串联整个调用链路,快速定位问题?
如何理清各个微服务之间的依赖关系?
如何进行各个微服务接口的性能分折?
如何跟踪整个业务流程的调用处理顺序?
Skywalking提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案;
Skywalking是国人采用Java开发的,现在已经是apache下的一个等级项目;
Skywalking主要功能特性
1、多种监控手段,可以通过语言探针和service mesh获得监控的数据;
2、支持多种语言自动探针,包括 Java,.NET Core 和 Node.JS;
3、轻量高效,无需大数据平台和大量的服务器资源;
4、模块化,UI、存储、集群管理都有多种机制可选;
5、支持告警;
6、优秀的可视化解决方案;
官网:http://skywalking.apache.org/
下载:http://skywalking.apache.org/downloads/
Github:https://github.com/apache/skywalking
使用公司:(国内非常多)
https://github.com/apache/skywalking/blob/master/docs/powered-by.md
Skywalking整体架构
skywalking 分布式链路追踪的介绍和集成Gateway网关_第1张图片

整个架构分成四部分:
1、上部分Agent :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器;
2、下部分 SkyWalking OAP :负责接收Agent发送的Tracing数据信息,然后进行分析(Analysis Core),存储到外部存储器(Storage),最终提供查询(Query)功能;
3、右部分Storage:Tracing数据存储,目前支持ES、MySQL、Sharding Sphere、TiDB、H2多种存储器,目前采用较多的是ES,主要考虑是SkyWalking开发团队自己的生产环境采用ES为主;
4、左部分SkyWalking UI:负责提供控台,查看链路等等;
SkyWalking 环境搭建部署
skywalking 分布式链路追踪的介绍和集成Gateway网关_第2张图片

1,下载 SkyWalking 软件包;
2,搭建一个 SkyWalking OAP 和SkyWalking UI服务;
3,启动一个Spring Boot应用,并配置SkyWalking Agent;
数据存储暂时先使用它默认的H2数据库存储,后续我们再使用其他存储;
1、下载 SkyWalking 软件包
对于 SkyWalking 的软件包,有两种方式获取:手动编译,官方包
一般情况下,我们建议使用官方包,手动编译也可以;
从这里下载:http://skywalking.apache.org/downloads/
2、SkyWalking OAP 搭建
解压下载好的压缩包:apache-skywalking-apm-8.1.0.tar.gz
解压后即完成了安装,不需要做其他操作;解压完成会得到一个目录:
skywalking 分布式链路追踪的介绍和集成Gateway网关_第3张图片

3、启动 SkyWalking OAP 服务
切换到bin目录:双击startup.bat
启动后会启动两个服务,一个是skywalking-oap-server,一个是skywalking-web-ui;
查看安装目录下的 ./logs 下的日志文件,检查两个服务的日志文件是否启动成功;
skywalking-oap-server服务启动后会占用:11800 和 12800 两个端口;
skywalking-web-ui服务会占用 8080 端口;
如果想要修改SkyWalking UI服务的参数,可以编辑webapp/webapp.yml 配置文件,比如:
server.port:SkyWalking UI服务端口,默认是8080;
collector.ribbon.listOfServers:SkyWalking OAP服务地址数组,SkyWalking UI界面的数据是通过请求SkyWalking OAP服务来获得;
3、访问SkyWalking UI界面:http://localhost:8080/
skywalking 分布式链路追踪的介绍和集成Gateway网关_第4张图片

页面的右下角可以中英文切换,可以切换选择要展示的时间区间的跟踪数据;
在IDEA中使用Skywalking
在运行的程序配置jvm参数和环境变量参数,如下图所示:
skywalking 分布式链路追踪的介绍和集成Gateway网关_第5张图片

-javaagent:G:\installation\springcloud-alibaba\skywalking\apache-skywalking-apm-bin-es7-1\agent/skywalking-agent.jar
SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11801;SW_AGENT_NAME=sharding
注:我这里的11801是经过修改的,默认的是11800
配置好启动配置之后,项目启动就会被skywalking监控到
如果tomcat端口与skywalking ui端口8080冲突的话,修改一下tomcat端口;
测试,访问一下项目,然后进入 SkyWalking UI 界面查看跟踪情况,由于上传数据是异步的,访问完项目后,可能需要等几秒才能看到跟踪数据;

SkyWalking中三个概念
服务(Service) :表示对请求提供相同行为的一系列或一组工作负载,在使用Agent时,可以定义服务的名字,我们可以看到 Spring Boot 应用服务为 " Consumer",就是我们在环境变量 SW_AGENT_NAME 中所定义的;
服务实例(Service Instance) :上述的一组工作负载中的每一个工作负载称为一个实例, 一个服务实例实际就是操作系统上的一个真实进程;
这里我们可以看到 Spring Boot 应用的服务为 {agent_name}-pid:{pid}@{hostname},由 Agent 自动生成;
端点(Endpoint) :对于特定服务所接收的请求路径, 如HTTP的URI路径和gRPC服务的类名 + 方法签名;
我们可以看到 Spring Boot 应用的一个端点,为API接口 /users;
SkyWalking建立Gateway 网关链路
如果你要追踪Gateway的话,你会发现:无法通过gateway发现路由的服务链路?
原因: Spring Cloud Gateway 是基于 WebFlux 实现,必须搭配上apm-spring-cloud-gateway-2.1.x-plugin 和 apm-spring-webflux-x.x-plugin 两个插件

方案:将agent/optional-plugins下的两个插件 复制到 agent/plugins目录下

你可能感兴趣的:(skywalking 分布式链路追踪的介绍和集成Gateway网关)