一、skywalking简介
1、skywalking介绍
Skywalking是一个国产的开源框架,2015年有吴晟个人开源,2017年加入Apache孵化器,国人开源的产品,主要开发人员来自于华为,2019年4月17日Apache董事会批准SkyWalking成为顶级项目,支持Java、.Net、NodeJs等探针,数据存储支持Mysql、Elasticsearch等,跟Pinpoint一样采用字节码注入的方式实现代码的无侵入,探针采集数据粒度粗,但性能表现优秀,且对云原生支持,目前增长势头强劲,社区活跃。
Skywalking是分布式系统的应用程序性能监视工具,专为微服务,云原生架构和基于容器(Docker,K8S,Mesos)架构而设计,它是一款优秀的APM(Application Performance Management)工具,包括了分布式追踪,性能指标分析和服务依赖分析等。
2、skywalking特点
1、多语言自动探针,支持 Java、.NET Code 等多种语言。
2、为多种开源项目提供了插件,为 Tomcat、 HttpClient、Spring、RabbitMQ、MySQL 等常见基础设施和组件提供了自动探针。
3、微内核 + 插件的架构,存储、集群管理、使用插件集合都可以进行自由选择。
4、优秀的可视化效果。
3、skywalking架构图
1、Agent(探针)
Agent 运行在各个服务实例中,负责采集服务实例的 Trace 、Metrics 等数据,然后通过 gRPC 方式上报给 SkyWalking 后端。
2、opa
负责接收 Agent 发送的 Tracing 和Metric的数据信息,然后进行分析(Analysis Core) ,存储到外部存储器( Storage ),最终提供查询( Query )功能。
3、ui
负责提供web控制台,查看链路,查看各种指标,性能等等。
4、storage
负责数据的存储,支持多种存储类型。
2、skywalking简单使用
1、官网下载依赖
下载地址:https://skywalking.apache.org/downloads/ 。skywalking在8.8.0版本以后将agent单独拆分了出来,所以若要使用8.8.0版本以后的,需要下载apm和agent两个压缩包。下载完成后解压到自己本地目录。
2、skywalking配置与启动
1、修改服务端口以防冲突
解压后的apm目录中的webapp/webapp.yml 中修改为自己所用端口号 。
2、配置文件介绍
在解压后的apache-skywalking-apm-bin目录下config/application.yml,选择对应的注册中心及修改注册中心配置。
3、选择对应的存储方式
可以为elasticsearch或mysql存储,使用mysql连接时,需要mysql驱动包,下载mysql数据库驱动包,添加到oap-libs目录中,同时修改mysql的配置信息。
4、在启动服务apache-skywalking-apm-bin目录下的bin目录下启动startup.bat为windows下服务,startup.sh为linux下服务,启动后访问配置好的端口localhost:对应端口,访问成功即可查看UI界面。
3、客户端的搭建与配置
1、配置启动参数,本地测试可在idea的VM中配置如下参数
-javaagent:D:\skywalking\skywalking-agent\skywalking-agent.jar
-Dskywalking.agent.service_name=skywalking-product-service
-Dskywalking.collector.backend_service=192.168.0.103:11800
参数说明:
-javaagent:指定skywalking中的agent中的skywalking-agent.jar的路径
-Dskywalking.agent.service_name:指定在skywalking中的服务名称,一般是微服务的spring.application.name
-Dskywalking.collector.backend_service:指定oap服务绑定的地址,并且oap服务默认的端口是11800,因此只需要配置为IP:11800
2、配置日志跟踪
添加依: 配置logback-spring.xml 日志文件及日志打印格式,可以看到控制台打印的TID。
<!--Logback-skywalking的依赖-->
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-logback-1.x</artifactId>
<version>8.7.0</version>
</dependency>
3、配置完成后启动服务,可以在UI界面查看到服务信息。
4、访问服务其中的接口后,点击对应的服务可以看到服务面板,面板中包括服务的成功率,服务的接口耗时,平均耗时,每分钟请求等信息。
5、topology代表服务之间的依赖关系,可以看出图中依赖为skywalking-order和skywalking-product两个服务的依赖和对数据库的依赖关系。
6、Trace表示请求的接口链路信息。左侧为请求的接口路径以及接口耗时,右边表示该接口访问的整个链路信息。可根据对应的traceId查询,可快速定位到接口链路信息,方便排查问题。
点击链路详细信息可查看日志详细信息。下图为详细SQL及服务调用接口信息。
7、log表示服务的请求日志信息,每次的请求都会在log中展示。