微服务链路追踪-SkyWalking

   日期:2025-01-03    作者:caijiyuan 浏览:85    移动:http://w.yusign.com/mobile/quote/9483.html

一、为什么需要链路追踪

由于微服务化项目拆分,会导致系统服务间调用链路愈发复杂,此时,一个前端请求可能最终需要调用多个后端服务才能完成实现。

微服务间调用链路可能是这样

当整个请求不可用出现问题时,我们是没有办法判断请求是由哪个服务端引发问题,这时我们需要浏览多个服务端的日志去快速定位故障点,找到调用异常的服务,跟进一个请求到底有哪些服务参与,参与顺序是怎样,从而达到每个请求的步骤清晰可见并且如果有新同事加入,不能快速的知道自己所负责的服务在哪一环等等,于是就有了分布式系统调用跟踪的需求。

链路追踪已经不是什么新兴技术和概念了,其可使用组件有很多,比如:sleuth、Zipkin、阿里鹰眼、大众点评Cat、SkyWalkIng等等…

这些组件有一个共同的名字: APM 工具 (Application Performance Management)即应用性能监控工具。

二、链路追踪组件之SkyWalking

(1)是什么是SkyWalking

 SkyWalking是中国人吴晟(华为)开源的一款APM工具,现在已属于Apache旗下开源项目, 是一个观察性分析平台和应用性能管理系统。提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。

(2)SkyWalkIng与ZipKin对比

至于为什么要采用此二者对比,因为我目前就用过这两个,zipkin是最早接触spring cloud项目用过,目前呢,是在学习SkyWalkIng。

ZipKinTwitter公司开源的一个分布式追踪工具,被Spring Cloud Sleuth集成,使用广泛而稳定。

ZIpKIn优缺点

优点:轻量级,springcloud集成,使用人数多,成熟。

缺点:侵入性,功能简单,欠缺APM报表能力(能力弱)。

Sleuth的作用是在系统中自动埋点并把数据发送给zipkin,zipkin的作用是存储这些数据并展现。

SkyWalking中国人吴晟(华为)开源的一款分布式追踪,分析,告警的工具,现已属于Apache旗下开源项目。

SkyWalking 优缺点

优点:多种监控手段多语言自动探针,Java,.NET Core 和 Node.JS,轻量高效,不需要大数据,模块化,UI、存储、集群管理多种机制可选,支持告警,社区活跃。

缺点:较为新兴,成熟度不够高。

(3) SkyWalking 组成部分

Probes探针,探针因使用的语言不同而不通,收集数据并且格式化为skywalking所需的格式。

Platform backend 平台后端,对应于zipkin server,可以集群部署,聚合,分析,将数据展示在UI中。

Storage存储,可扩展的存储,可以使es,H2,MySQL集群默认 h2。

UI 丰富的可视化功能,提供身份验证。

仪表盘对项目的监控,看项目是如何运转的,链路过程情况。拓扑图:就是整个图形的演示。追踪:就是碰到一些问题。告警:碰到问题的告警。

官网架构图一

官网架构图二

三、SkyWalkIng的部署及使用

我们去官网下载es7-8.1.0 版本,下载界面如下

解压之后,Windows环境中启动startup.bat,Linux环境中启动startup.sh即可(通过jps命令查看)。

 (1)本地开发部署探针处理(IDEA部署

SkyWalkIng在我们的微服务项目中虽然不需要额外引入依赖包,但是为了给SkyWalkIng 发送我们的链路信息,实际上还需要一个探针。

Probes:探针,探针因使用的语言不同而不通,收集数据并且格式化为skywalking所需的格式。

因为我开发语言为java,则需要java探针,即Java Agent 服务器探针。

那么探针在哪里来呢

Java Agent 服务器探针

解压后,Java Agent 所处的位置在解压后文件夹

apache-skywalking-apm-es7-8.1.0apache-skywalking-apm-bin-es7agent 目录下

我们需要给每个想要由SkyWalkIng管理的项目添加JVM 启动参数

 

启动项目后,我们再来看一下SKyWalkIng管理UI端(http://localhost:8080,有信息,则说明探针部署成功了。

(2Jar包方式部署探针处理
 
 
(3)Docker方式部署探针处理
1、部署Elasticsearch

拉取镜像

 

指定单机启动

:通过ES_JAVA_OPTS设置ES初始化内存,否则在验证时可能会起不来

 

验证es安装成功

浏览器地址栏输入:http://IP:9200/

可以安装 kibana 一起使用

2、部署Skywalking OAP

拉取镜像

 

启动Skywalking OAP

:–link后面的第一个参数和elasticsearch容器名一致

-e SW_STORAGE_ES_CLUSTER_NODES:es7也可改为你es服务器部署的Ip地址,即ip:9200

 
3、部署Skywalking UI

拉取镜像

 

启动Skywalking UI

:–link后面的第一个参数和skywalking OAP容器名一致

 
4、应用程序配合Skywalking Agent部署

构建基础镜像,将我们的skywalking-agent 文件包含在内,提供给java服务使用

 

构建服务镜像 order-demo

 
 
5、通过挂载的方式(推荐

在启动脚本中把把服务器上的agent文件挂载在容器内部

 

在Dockerfile文件中添加启动参数

 
(4)k8s方式部署探针处理

先在服务器中部署elasticsearch用来做存储,在oap中修改以es来做存储方式。

1、创建skywalking-oap的yaml
 
2、创建skywalking-ui的yaml
 
3、k8s中部署 skywalking-oap.yaml、skywalking-ui.yaml
 
 
 
4、k8s 部署项目增加skywalking链路追踪(通过挂载的方式
 

K8s快速生成yaml模板文件

 

四、配置SkyWalking日志收集(logback为例

pom 中依赖 SkyWalking 的 logback 插件包:

 

添加或修改 logback.xml,启用 SkyWalking 提供的 appender,示例配置如下:

本文地址:http://w.yusign.com/quote/9483.html    述古往 http://w.yusign.com/static/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关行情
推荐行情
点击排行
{
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  版权声明  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号