Skywalking 的使用
本文为博主原创,未经允许不得转载:
官网:http://skywalking.apache.org/
下载:http://skywalking.apache.org/downloads/
Github:https://github.com/apache/skywalking
文档: https://skywalking.apache.org/docs/main/v8.4.0/readme/
中文文档: https://skyapm.github.io/document-cn-translation-of-skywalking/
1.skywalking 简介
skywalking是国产开源框架,是分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。SkyWalking 是观察性分析平台和应用性能管理系统,提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。
2.Skywalking 与 Zipkin 比较
Zipkin是Twitter开源的调用链分析工具,目前基于springcloud sleuth得到了广泛的使用,特点是轻量,使用部署简单。其通过拦截请求,发送数据至zipkin 服务,发送(http)数据到zipkin服务。缺点在于不支持告警,不支持JVM监控,通信方式使用Http请求向Zipkin上报信息,比较耗性能。
SkyWalking是本土开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能较强,接入端无代码侵入。目前已加入Apache孵化器。其通过探针,字节码增强实现。通信方式采用GRPC,性能较好,实现方式是java探针,支持告警,支持JVM监控,支持全局调用统计等等,功能较完善。缺点是依赖较多,需要ElasticSearch,JDK环境,Nacos注册中心等。
且skywalking 的探针对吞吐量的影响最小,zipkin 的吞吐量居中。
3. 下载及文件目录说明
下载 Skywalking :http://skywalking.apache.org/downloads/
linux 下载及解压
-- 下载 skywalking 的安装包
wget https://archive.apache.org/dist/skywalking/8.6.0/apache-skywalking-apm-8.6.0.tar.gz
-- 解压安装包
tar -zxvf apache-skywalking-apm-8.6.0.tar.gz
解压之后的目录说明:
webapp:UI 前端及web 监控页面的 jar 包和配置文件
oap-libs : 后台应用的jar 包,以及它的依赖jar 包,里面有一个 server-starter-8.6.0.jar 就是启动程序
bin : 各种启动脚本,一般使用 startup.sh 来启动web 页面和对应的后台应用
agent : skywalking-agent 需要依赖的jar 包,配置以及插件等
4. 搭建Skywalking OAP 服务
先使用默认的H2数据库存储,不用修改配置:config/application.yml
启动脚本bin/startup.sh
启动成功后会启动两个服务,一个是skywalking-oap-server,一个是skywalking-web-ui
skywalking-oap-server服务启动后会暴露11800 和 12800 两个端口,分别为收集监控数据的端口11800和接受前端请求的端口12800,修改端口可以修改config/applicaiton.yml
skywalking-web-ui服务会占用 8080 端口, 修改端口可以修改webapp/webapp.yml
访问skywalking UI
SkyWalking中三个概念
服务(Service) :表示对请求提供相同行为的一系列或一组工作负载,在使用Agent时,可以定义服务的名字;
服务实例(Service Instance) :上述的一组工作负载中的每一个工作负载称为一个实例, 一个服务实例实际就是操作系统上的一个真实进程;
端点(Endpoint) :对于特定服务所接收的请求路径, 如HTTP的URI路径和gRPC服务的类名 + 方法签名;
6. Skywalking Agent 跟踪微服务
在使用java -jar 启动微服务时,指定启动参数的属性:
java -javaagent:/opt/skywalking/apache-skywalking-apm-bin/agent/skywalking-agent.jar -jar springboot-skywalking-demo-0.0.1-SNAPSHOT.jar
Skywalking跨多个微服务跟踪,只需要每个微服务启动时添加javaagent参数即可。
此时打开 Skywalking 的监控页面,可以看到调用的数据显示: