微服务链路追踪组件Skywalking实战
2025-02-26 15:05:07 0 举报
AI智能生成
微服务链路追踪组件Skywalking实战,分享给大家学习。 更多干货内容,欢迎关注我的公众号:Fox爱分享
作者其他创作
大纲/内容
课程目标
掌握Skywalking的使用,解决微服务链路追踪问题
怎么学
没接触过微服务的同学一定要先把《轻松玩转微服务:新手入门Spring Cloud Alibaba》这节课跟一遍
课上代码
项目地址
skywalking-examples/springboot-skywalking-demo
git切换到fox-dev分支,选择 tag v2.6.0
基础回顾
监控可视化:Skywalking实时追踪服务链路
全链路追踪的作用
对请求源头到底层服务的调用链路中间的所有环节进行监控。
skywalking是什么
官方网站
skywalking是分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。
SkyWalking 是观察性分析平台和应用性能管理系统,提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。
Skywalking整体架构
SkyWalking 环境搭建部署
下载 SkyWalking
apache-skywalking-apm-10.0.1.tar.gz
https://www.apache.org/dyn/closer.cgi/skywalking/10.0.1/apache-skywalking-apm-10.0.1.tar.gz
skywalking的后端服务OAP+可视化UI
apache-skywalking-java-agent-9.3.0.tgz
https://www.apache.org/dyn/closer.cgi/skywalking/java-agent/9.3.0/apache-skywalking-java-agent-9.3.0.tgz
用于从微服务采集数据的探针
搭建SkyWalking OAP 服务
1)修改配置
先使用默认的H2数据库存储,不用修改config/application.yml配置
skywalking-web-ui服务会占用 8080 端口, 修改端口可以修改webapp/webapp.yml
2)windows下启动脚本bin/startup.bat
启动成功后会启动两个服务,一个是skywalking-oap-server,一个是skywalking-web-ui
访问UI界面,如果端口改为了18080,访问:http://localhost:18080/
微服务接入Skywalking agent探针
微服务配置jvm参数,接入skywalking
以订单服务为例,idea启动配置中配置skywalking agent
账户服务,库存服务同上
测试,用户下单,在skywalking UI界面查看是否有链路数据
常见问题: 没有查看到网关服务的数据
需要将agent包下的optional-plugins/apm-spring-cloud-gateway-4.x-plugin-9.3.0.jar 拷贝到plugins下
网关服务整合日志框架后不打印traceId
参考
关于Skywalking更多的操作,会在Skywalking实战课程中讲解
小结
通过Skywalking可以实现微服务调用链路追踪
常用配置
演示环境
以springboot-skywalking-demo为例,配置skywalking-agent
测试接口
Skywalking集成日志框架
官方文档
实现步骤
1)引入依赖
2) 微服务添加logback-spring.xml文件,并配置 %tid 占位符
测试 ,调用http://localhost:8000/user/list
查看控制台日志
3) Skywalking通过grpc上报日志 (需要v8.4.0以上)
gRPC报告程序可以将收集到的日志转发到SkyWalking OAP服务器上
logback-spring.xml中添加GRPCLogClientAppender
Skywalking UI效果
自定义SkyWalking链路追踪
需求
希望对项目中的业务方法,实现链路追踪,方便我们排查问题
实现步骤
1)引入依赖
在业务方法中可以使用TraceContext获取到traceId
测试 ,调用http://localhost:8000/user/list
控制台打印traceId
在Skywalking UI中查询tranceId
2) @Trace将方法加入追踪链路
如果一个业务方法想在ui界面的追踪链路上显示出来,只需要在业务方法上加上@Trace注解即可
还可以为追踪链路增加其他额外的信息,比如记录参数和返回信息。
实现方式:在方法上增加@Tag或者@Tags。
Skywalking告警通知
官方文档
skywalking发行版中提供了默认的alarm-setting.yml文件,包括一些规则
告警规则的定义分为三部分:
- 告警规则:它们定义了应该如何触发度量警报,应该考虑什么条件;
- 网络钩子(Webhook}:当警告触发时,哪些服务终端需要被通知;
- gRPC钩子:远程gRPC方法的主机和端口,告警触发后调用;
比如service_resp_time_rule规则
该规则表示服务{name}的响应时间在最近10分钟的3分钟内超过1000ms
属性的含义
测试告警通知
1) 编写接口,模拟慢查询
2) 访问接口http://localhost:8000/user/info/2,过段时间会在skywalking控制界面出现了告警信息
3) 实现回调接口
当前10.0.1版本出现回调不通的bug
排查思路
4) 在config/alarm-settings.yml中配置回调接口,并重启skywalking服务
测试访问:http://localhost:8000/user/info/2,满足告警规则后,控制台输出告警信息
Skywalking持久化追踪数据
基于elasticsearch持久化
1.准备好elasticsearch环境(参考ES专题)
启动elasticsearch服务
2.修改config/application.yml配置文件,指定存储使用ES,修改elasticsearch的连接配置
3. 启动Skywalking服务
启动时会向elasticsearch中创建大量的index索引用于持久化数据
启动应用程序,查看追踪数据是否已经持久化到elasticsearch的索引中,然后重启skywalking,验证追踪数据会不会丢失
Skywalking集群部署(oap服务高可用)
Skywalking集群是将skywalking oap作为一个服务注册到nacos上,只要skywalking oap服务没有全部宕机,保证有一个skywalking oap在运行,就能进行追踪。
搭建一个skywalking oap集群需要:
(1)至少一个Nacos(也可以是nacos集群)
(2)至少一个ElasticSearch(也可以是es集群)
(3)至少2个skywalking oap服务;
(4)至少1个UI(UI也可以集群多个,用Nginx代理统一入口)
(2)至少一个ElasticSearch(也可以是es集群)
(3)至少2个skywalking oap服务;
(4)至少1个UI(UI也可以集群多个,用Nginx代理统一入口)
搭建步骤
1.修改config/application.yml文件
使用nacos作为注册中心
修改nacos配置
可以选择性修改监听端口
修改存储策略,使用elasticsearch作为storage
2. 配置ui服务webapp/application.yml文件的oap-service,写多个oap服务地址
3.启动微服务测试
指定微服务的jvm参数

收藏

收藏
0 条评论
下一页