基于 SkyWalking 实现微服务链路追踪

简介

skywalking是做分布式追踪、服务网格遥测分析、度量聚合和可视化一体化的监视工具,具体的介绍可浏览官网或者阅读相关文档:

官网:
http://skywalking.apache.org/zh/

相关中文文档:
https://github.com/SkyAPM/document-cn-translation-of-skywalking

skywalking主要由四个模块组成,分别是:

1、探针:负责集成到目标系统中,收集遥测数据, 包括链路追踪和性能指标。

2、后台:负责接收探针收集的数据,由两大类数据组成,分别是 链路追踪 和 度量指标 。

3、界面:对后台收集的数据做可视化处理,提供了关于总览, 服务, 服务实例, 端点, 追踪和报警相关的观测图, 包括了拓扑图, 依赖图, 热点图等等.

4、命令行客户端:提供了一套提供与 Skywalking 后台交互的命令行接口。

同时skywalking还有很多其他的配置,如数据库配置,可使用elasticsearch作为数据存储等。

为什么使用skywalking

skywalking官方的一句话:分布式系统的应用程序性能监视工具

skywalking是对分布式系统应用程序的性能监视的工具。skywalking可以对服务的性能进行监控,以及服务的链路追踪和分析。

1、仪表盘

在skywalking UI的仪表盘中记录了服务、端点、实例的吞吐量CPM,响应百分比P99-P50,以及请求情况(请求成功率SLA)等图标信息,很直观的查看到哪些端点或者实例的运行情况

2、拓补图

在skywalking的拓补图中,展示了各个服务之间的关系和服务的类型,方便分析整个系统架构

3、链路追踪

skywalking可以获取每个请求的链路,并且记录每个点的耗时情况和运行情况,以红色表示失败,蓝色标识成功,并且展示每一层的调用情况以及耗时,可以分析出此次调用耗时在哪个环节,方便优化。如果是发生错误,skywalking也记录了整个调用链上发生错误的位置,方便排查错误

4、告警

skywalking可以配置告警功能,当配置的某个接口发生错误,达到配置的阈值时,skywalking可以发出告警,及时提醒开发者查看

所以,skywalking整合了微服务之间的关系,和链路追踪以及性能分析功能,便于微服务的性能分析和问题排查,不用挨个服务的寻找问题所在。

skywalking环境部署

skywalking下载

在官网下载最新版skywalking:

  • 下载地址:http://skywalking.apache.org/zh/downloads/
基于 SkyWalking 实现微服务链路追踪

解压后的文件

基于 SkyWalking 实现微服务链路追踪

探针的使用

启动skywalking后台程序和ui

在此之前可以修改ui等启动的端口,例如ui的端口,在webapp目录下–>的webapp.yml文件,这里修改的是808端口,默认是8080

基于 SkyWalking 实现微服务链路追踪

  • 启动skywalking的方法是:

在解压下的bin目录,windows双击startup.bat,linux运行startup.sh

启动效果如下:

基于 SkyWalking 实现微服务链路追踪

访问本地808端口:

基于 SkyWalking 实现微服务链路追踪

探针的配置

基于 SkyWalking 实现微服务链路追踪

使用探针

在要监控的项目中使用探针,在开发环境,结合idea使用时,配置我们项目的启动参数:

-javaagent:D:cloudapache-skywalking-apm-binagentskywalking-agent.jar

-javaagent后面是skywalking探针的绝对地址,也就是之前下载的skywalking的压缩包解压出来后目录下的agent目录下的agent jar包。

基于 SkyWalking 实现微服务链路追踪

基于 SkyWalking 实现微服务链路追踪

启动项目后,控制台会后探针日志打印

基于 SkyWalking 实现微服务链路追踪

正式环境使用探针

如果是正式环境想要使用skywalking探针,也只需要在启动jar包的时候配置启动参数即可,例如:jar包启动,java -javaagent:D:cloudapache-skywalking-apm-binagentskywalking-agent.jar -jar
sentinel-dashboard-1.7.2.jar 启动即可,如图:

基于 SkyWalking 实现微服务链路追踪

基于 SkyWalking 实现微服务链路追踪

skywalking agent配置覆盖

在正式环境使用探针时,每使用一次,都去配置一下agent的参数信息也是比较繁琐的,所以skywalking有配置覆盖的选项,即不同的形式的配置优先级是不一样的,具体如下:

JVM配置 > 系统环境变量 > agent.config

上面所用的方式是agent.config的方式,优先级是最低的,所以还可以覆盖他的配置:

jvm配置:

-javaagent:/path/to/skywalking-agent.jar=[option1]=[value1],[option2]=[value2]

-javaagent:skywalkingagent.jar=agent.service_name=test,collector.backend_service=xxx:11800

环境变量配置:

-Dskywalking.[option1]=[value1]

-Dskywalking.service_name=xxxx

这样在启动的时候,就不用每次去复制一份agent文件了,只需要在启动时加上参数即可

skywalking效果

访问我们启动好的项目程序,可以看到,skywalking已经记录下了链路追踪的日志,包括访问的成功和失败

基于 SkyWalking 实现微服务链路追踪

基于 SkyWalking 实现微服务链路追踪

基于 SkyWalking 实现微服务链路追踪

更多功能还需要我们接下来更多的探索。。。

skywalking仪表盘简介:

skywalking仪表盘布局

skywalking仪表盘分为服务、端点、实例的性能监控:

skywalking仪表盘大致结构如下(展示的图表可以自定义):

基于 SkyWalking 实现微服务链路追踪

有功能的选择(功能分为仪表盘、拓补图、追踪、性能剖析、告警等功能,具体的下面介绍)

服务视角

服务视角分为界面如下:

基于 SkyWalking 实现微服务链路追踪

服务视角有以上的监控数据可以自定义监视数据图表的展示

实例视角

实例仪表盘如下:

基于 SkyWalking 实现微服务链路追踪

实例仪表盘分析了JVM相关的图表和请求响应相关的图表,可以直观的看到请求或者服务占用等情况。

端点视角

端点仪表盘如下:

基于 SkyWalking 实现微服务链路追踪

端点仪表盘展示了每个端点的请求响应情况以及延时情况。在端点可以看到影响性能的端点名称等。

拓补图

拓补图可以看到整个微服务的相互作用关系,可以看到整个调用链的大致结构,以及服务的类型。方便开发者理解整个系统的架构

拓补图内容如下:

基于 SkyWalking 实现微服务链路追踪

拓补图可以大致地看出某个服务的运行情况,也可以点击服务相关内容查看详细信息。在每个调用链上也展示了请求数和延时情况等信息,方便查看者对服务情况大体的了解。

基于 SkyWalking 实现微服务链路追踪

拓补关系图分组,具体流程:Create group ===> 输入分组名称 ====> confirm

基于 SkyWalking 实现微服务链路追踪

基于 SkyWalking 实现微服务链路追踪

追踪

skywalking链路追踪可以收集整个服务的调用链,以及调用情况,执行情况,和参数等,具体如下:

基于 SkyWalking 实现微服务链路追踪

蓝色为调用成功的链路,点击列表可展示链路具体的调用信息,查看耗时,参数,执行情况等,方便对链路进行分析。

性能分析

skywalking的性能分析,在根据服务名称、端点名称,以及相应的规则建立了任务列表后,在调用了此任务列表的端点后。skywalking会自动记录,剖析当前端口,生成剖析结果,具体流程如图:

基于 SkyWalking 实现微服务链路追踪

基于 SkyWalking 实现微服务链路追踪

基于 SkyWalking 实现微服务链路追踪

skywalking告警

配置

skywalking告警的配置文件如图:

基于 SkyWalking 实现微服务链路追踪

在skywalking目录的config目录下的alarm-setings.yml文件中进行配置

基于 SkyWalking 实现微服务链路追踪

配置规则:

具体规格参考:

中文文档:https://github.com/SkyAPM/document-cn-translation-of-skywalking/blob/master/docs/zh/8.0.0/setup/backend/backend-alarm.md

英文文档:https://github.com/apache/skywalking/blob/v8.0.1/docs/en/setup/backend/backend-alarm.md
基于 SkyWalking 实现微服务链路追踪

动态规则

skywalking可以设置动态规则,可以配合nacos或者Zookeeper实现

本文转载于
https://www.yuque.com/zhoujiyu/wspgur

本文版权归 飞翔沫沫情 作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出 原文链接 如有问题, 可发送邮件咨询,转贴请注明出处:https://www.fxkjnj.com/3035/

发表评论

登录后才能评论