skywalking--链路追踪

什么是skywalking

Skywalking是一个国产的开源框架,2015年有吴晟个人开源,2017年加入Apache孵化器,国人开源的产品,主要开发人员来自于华为,2019年4月17日Apache董事会批准SkyWalking成为顶级项目,支持Java、.Net、NodeJs等探针,数据存储支持Mysql、Elasticsearch等,跟Pinpoint一样采用字节码注入的方式实现代码的无侵入,探针采集数据粒度粗,但性能表现优秀,且对云原生支持,目前增长势头强劲,社区活跃。
Skywalking是分布式系统的应用程序性能监视工具,专为微服务,云原生架构和基于容器(Docker,K8S,Mesos)架构而设计,它是一款优秀的APM(Application Performance Management)工具,包括了分布式追踪,性能指标分析和服务依赖分析等。

Skywalking架构

SkyWalking 逻辑上分为四部分: 探针, 平台后端, 存储和用户界面。

  • 探针 基于不同的来源可能是不一样的, 但作用都是收集数据, 将数据格式化为 SkyWalking 适用的格式.
  • 平台后端, 支持数据聚合, 数据分析以及驱动数据流从探针到用户界面的流程。分析包括 Skywalking 原生追踪和性能指标以及第三方来源,包括 Istio 及 Envoy telemetry , Zipkin 追踪格式化等。 你甚至可以使用 Observability Analysis Language 对原生度量指标 和 用于扩展度量的计量系统 自定义聚合分析。
  • 存储 通过开放的插件化的接口存放 SkyWalking 数据. 你可以选择一个既有的存储系统, 如 ElasticSearch, H2 或 MySQL 集群(Sharding-Sphere 管理),也可以选择自己实现一个存储系统. 当然, 我们非常欢迎你贡献新的存储系统实现。
  • UI 一个基于接口高度定制化的Web系统,用户可以可视化查看和管理 SkyWalking 数据。

skywalking环境搭建

 

  • Skywalking agent和业务端绑定在一起,负责收集各种监控数据
  • Skywalking oapservice是负责处理监控数据,接受agent的数据并存储在数据库中,接受来自UI的请求,查询监控数据。
  • Skywalking UI提供给用户,展现各种监控数据和告警

我们可以在Downloads | Apache SkyWalking

icon-default.png?t=M7J4

https://skywalking.apache.org/downloads/ 网址下载相对应版本的skywalking

 下载完毕将压缩包解压

webapp:UI前端(web监控页面)的jar包和配置文件;

oap-libs:后台应用的jar包,以及它的依赖jar包,里面的server-starter-*.jar就是启动程序;

config:启动后台应用程序的配置文件,是使用的各种配置;

bin:各种启动脚本,一般使用脚本startup.bat在Windows下启动web页面和对应的后台应用;

agent:

  • skywalking-agent.jar:代理服务jar包;
  • config:代理服务启动时使用的配置文件
  • plugins:包含多个插件看,代理服务启动时会加载该目录下的所有插件(jar包);
  • optional-plugins:可选插件,当需要支持某种功能时,比如springcloud-Gateway,则需要把对应的jar包拷贝到plugins目录下;

启动skywalking服务和UI界面

 启动完成

 访问http://localhost:8080/查看是否成功

这里的8080端口时默认端口可以在webapp/webapp.yml配置文件中修改 

 

 

 在IDEA启动项目中使用Skywalking

需要进行链路追踪的微服务都需要在jvm配置中加入以下内容

 

-javaagent:D:/skywalking/apache-skywalking-apm-8.5.0/apache-skywalking-apm-bin/agent/skywalking-agent.jar
-Dskywalking.agent.service_name=springcloud-gateway
-Dskywalking.collector.backend_service=localhost:11800

因为skywalking默认没有gateway的依赖,从可选插件里复制我们所需要的gateway插件到plugins中即可。   

 

 完成后重启项目和skywalking

测试

 

 

可以以拓扑图的形式查看经过的节点

还可以具体查看模块性能 

 

skywalking持久化

skywalking链路追踪的内容默认存储在内存中,关闭服务之后链路信息就会丢失,那么如何持久化到MySQL数据库呢?

第一步,修改/config/application.yml文件中的以下内容

 

 

 第二步,将MySQL的jar包放入oap-libs目录中

他是没有带Mysql的jar包的,需要自己下载并放入

 

 第三步,创建swtest数据库

数据库名自定义,只需创建数据库,他重启后会自己创建所需的表

 第四步,重启skywalking服务

重启完毕查看数据库,生成大量表 

相关文章

学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习...
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面...
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生...
Can’t connect to local MySQL server through socket \'/v...
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 ...
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服...