链路追踪自从用了SkyWalking,睡的真香!
共 8047字,需浏览 17分钟
·
2021-11-26 20:11
本篇文章介绍链路追踪的另外一种解决方案Skywalking,文章目录如下:
什么是Skywalking?
Skywalking和Spring Cloud Sleuth+ZipKin如何选型?
-
skywalking采用字节码增强的技术实现代码无侵入,zipKin代码侵入性比较高 -
skywalking功能比较丰富,报表统计,UI界面更加人性化
Skywalking架构是怎样的?
-
上面的Agent:负责收集日志数据,并且传递给中间的OAP服务器 -
中间的OAP:负责接收 Agent 发送的 Tracing 和Metric的数据信息,然后进行分析(Analysis Core) ,存储到外部存储器( Storage ),最终提供查询( Query )功能。 -
左面的UI:负责提供web控制台,查看链路,查看各种指标,性能等等。 -
右面Storage:负责数据的存储,支持多种存储类型。
服务端如何搭建?
1、下载安装包
“ 可以按照自己的需要选择其他版本 ”
-
agent:客户端需要指定的目录,其中有一个jar,就是负责和客户端整合收集日志 -
bin:服务端启动的脚本 -
config:一些配置文件的目录 -
logs:oap服务的日志目录 -
oap-libs:oap所需的依赖目录 -
webapp:UI服务的目录
2、配置修改
3、启动服务
-
oap服务:对应的启动脚本oapService.bat,Linux下对应的后缀是sh -
UI服务:对应的启动脚本webappService.bat,Linux下对应的后缀是sh
客户端如何搭建?
-
skywalking-product1001:商品微服务 -
skywalking-order1002:订单微服务 -
skywalking-gateway1003:网关微服务
“ 案例源码已经上传,关注公众号:码猿技术专栏,回复关键词 9528获取! ”
-javaagent:E:\springcloud\apache-skywalking-apm-es7-8.7.0\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar
-Dskywalking.agent.service_name=skywalking-product-service
-Dskywalking.collector.backend_service=127.0.0.1:11800
-
-javaagent:指定skywalking中的agent中的 skywalking-agent.jar
的路径 -
-Dskywalking.agent.service_name:指定在skywalking中的服务名称,一般是微服务的 spring.application.name
-
-Dskywalking.collector.backend_service:指定oap服务绑定的地址,由于这里是本地,并且oap服务默认的端口是11800,因此只需要配置为 127.0.0.1:11800
java -jar xxx
指定,在IDEA中操作如下图:
“ 注意:agent的jar包路径不能包含中文,不能有空格,否则运行不成功。 ”
数据如何持久化?
1、修改配置文件
-
修改默认的存储方式为mysql,如下图:
-
修改Mysql相关的信息,比如用户名、密码等,如下图:
2、添加MySQL的jdbc依赖
日志监控如何做?
-
log4j:https://skywalking.apache.org/docs/skywalking-java/v8.8.0/en/setup/service-agent/java-agent/application-toolkit-log4j-1.x/ -
log4j2:https://skywalking.apache.org/docs/skywalking-java/v8.8.0/en/setup/service-agent/java-agent/application-toolkit-log4j-2.x/ -
logback:https://skywalking.apache.org/docs/skywalking-java/v8.8.0/en/setup/service-agent/java-agent/application-toolkit-logback-1.x/
1、添加依赖
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-logback-1.x</artifactId>
<version>${project.release.version}</version>
</dependency>
2、添加配置文件
logback-spring.xml
放在resource目录下,配置如下图:
/agent/config/agent.config
配置文件末尾添加如下配置:
plugin.toolkit.log.grpc.reporter.server_host=${SW_GRPC_LOG_SERVER_HOST:10.10.10.1}
plugin.toolkit.log.grpc.reporter.server_port=${SW_GRPC_LOG_SERVER_PORT:11800}
plugin.toolkit.log.grpc.reporter.max_message_size=${SW_GRPC_LOG_MAX_MESSAGE_SIZE:10485760}
plugin.toolkit.log.grpc.reporter.upstream_timeout=${SW_GRPC_LOG_GRPC_UPSTREAM_TIMEOUT:30}
性能剖析如何做?
/order/list
接口,如下:
{GET}/order/list
这个接口上耗费了2秒以上,因此选择这个接口点击分析,可以看到详细的堆栈信息,如下图:
监控告警如何做?
-
最近3分钟内服务的平均响应时间超过1秒 -
最近2分钟服务成功率低于80% -
最近3分钟90%服务响应时间超过1秒 -
最近2分钟内服务实例的平均响应时间超过1秒
config/alarm-settings.yml
配置文件中,如下图:
-
POST请求 -
application/json 接收数据 -
接收的参数必须是AlarmMessage中指定的参数。
org.apache.skywalking.oap.server.core.alarm
,如下图:
config/alarm-settings.yml
配置文件中添加这个钩子,如下图:
总结
有道无术,术可成;有术无道,止于术
欢迎大家关注Java之道公众号
好文章,我在看❤️