Skywalking做为生产级的调用链监控工具,不仅提供了丰富的监控系统,而且通过字节码拦截形式集成系统,对系统没有任何侵入性;最近研究一下调用链项目,在此与大家共享;
github 地址 https://github.com/apache/skywalking
- 从github中下载压缩包;
- 解压进入bin目录;
- startup.bat(Windows系统) 或 startup.sh(Linux系统)启动;
- 访问http://localhost:8080/ (在此以本地为例)
下载地址
https://downloads.apache.org/skywalking/8.6.0/apache-skywalking-apm-8.6.0.tar.gz
下载完解压
主要目录结构如下:
bin目录存放的是启动脚本,包含oapService.bat、webappService.bat、oapService.sh、webappService.sh等启动脚本
config是oap服务的配置,包含一个application.yml的配置文件
agent是skywalking的agent,一般用来采集业务系统的日志
webapp目录是skywalking前端的UI界面服务的配置
整体的架构如下:
在整个skywalking的系统中,有四个角色:
skywalking agent和业务系统绑定在一起,负责收集各种监控数据
Skywalking oapservice是负责处理监控数据的,比如接受skywalking agent的监控数据,并存储在数据库中(本案例使用elasticsearch);接受skywalking webapp的前端请求,从数据库查询数据,并返回数据给前端。Skywalking oapservice通常以集群的形式存在。
skywalking webapp,前端界面,用于展示数据。
用于存储监控数据的数据库,比如mysql、elasticsearch等。
通过查看config\application.yml
默认是存储在h2中。 支持es,mysql,tidb,influxdb,postgresql,zipkin-elasticsearch7
启动程序 startup.bat
配置idea启动参数
VM options 虚拟机参数
-javaagent:D:\apache-skywalking-apm-8.6.0\apache-skywalking-apm-bin\agent\skywalking-agent.jar
Environment variables 环境变量
SW_AGENT_NAME=boot-es;W_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800
最终的启动命令为:
java -javaagent:D:\apache-skywalking-apm-8.6.0\apache-skywalking-apm-bin\agent\skywalking-agent.jar -jar boot-es.jar
如果配置文件中已配置的话,也可以不配置环境变量
D:\apache-skywalking-apm-8.6.0\apache-skywalking-apm-bin\agent\config\agent.config
日志采集
在springboot工程的pom文件中添加相关依赖
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-logback-1.x</artifactId>
<version>8.6.0</version>
</dependency>
在resources中新建logback-spring.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="skywalking-log" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level logger_name:%logger{36} - [%tid] - message:%msg%n</pattern>
</layout>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="skywalking-log" />
</root>
</configuration>
服务细粒度指标---平均时延,平均吞吐量等
端点---端点维度查看平均时延,平均吞吐量,慢端点排行榜
实例---实例维度查看响应时间,吞吐量,内存信息
拓扑图---看到项目拓扑
追踪---每个请求的耗时明细
【总结】
做为生产级项目,相关监控是必不可少的;监控可以让我们直观实时的知道项目运行的情况,为项目后续的优化提供重要的参考指标。
版权归原作者 jiangxwa 所有, 如有侵权,请联系我们删除。