前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式追踪之JAEGER搭建

分布式追踪之JAEGER搭建

作者头像
无涯WuYa
发布2022-06-16 14:57:54
8830
发布2022-06-16 14:57:54
举报
文章被收录于专栏:Python自动化测试

随着系统微服务架构在企业全面的推进和落地的过程中,系统业务的复杂性以及系统服务数量越来越多的情况下,开发和测试不得不面对复杂的服务调用关系,在生产环境出问题的情况下,线上排查定位故障的成本会大幅度的增加,为了解决这个问题需要搭建基于分布式架构的全链路追踪监控系统。分布式系统追踪的英文单词是Distributed Tracing System,使用分布式追踪系统可实现追踪微服务架构中的故障跟踪与定位,以及网络结构和调用链的分析等。分布式追踪系统在结构上来说,主要分为如下几个部分:

  • 追踪:把追踪可以简单的理解为分布式中的一个完整的调用链,每个追踪都会有一个独立的追踪ID,完整的调用链可以理解为是一个网络请求,也就是从客户端发起请求到响应回复客户端的过程。
  • 跨度:跨度是分布式系统中最小的调用单元,调用的过程中可以是一个独立的服务,也可以是一个函数(方法),以及具体的代码语句块。跨度的要素主要包含了调用的开始结束时间戳,日志等其他的信息,每个跨度都是有独立的跨度ID。
  • 跨度上下文:上下文可以理解为是追踪信息的数据结构信息,这中间包含了追踪ID,跨度ID,以及服务调用过程中传递的调用信息。

在分布式微服务系统中,服务调用往往不是单纯的两个服务之间的调用,往往会涉及很多服务之间的调用,比如在一个具体的业务调用链中,客户端调用服务A,那么这个时候需要经过B,C,D,E等服务然后才可以把结果信息返回给客户端。那么在这个过程中,在调用的开始会生成追踪的ID信息,这个追踪ID会记录下每个调用服务的串联关系的时序图,如下所示的图:

在如上的调用链中,如果服务B出现了问题,那么就会迅速的定位出来,而不需要其他的服务也参与进来。因此使用分布式追踪系统可以很轻松的查看服务调用链的关系图,以及根据路径分析用户行为操作从而对服务进行优化。

在分布式追踪系统中推荐使用Jaeger组件(详细介绍建议查看官方的手册)。Jaeger的组件是特别的多,这地方主要是以Docker的方式来获取以及运行,因此选择All-In-One的组件,获取的命令为:

代码语言:javascript
复制
docker pull jaegertracing/all-in-one:1.33

使用Docker获取jaeger的镜像后,下来直接运行镜像来启动容器,启动的命令具体如下:

代码语言:javascript
复制
docker run -d --name jaeger \
  -e COLLECTOR_ZIPKIN_HOST_PORT=:9411 \
  -p 5775:5775/udp \
  -p 6831:6831/udp \
  -p 6832:6832/udp \
  -p 5778:5778 \
  -p 16686:16686 \
  -p 14250:14250 \
  -p 14268:14268 \
  -p 14269:14269 \
  -p 9411:9411 \
  jaegertracing/all-in-one:1.33

启动成功后下来在浏览器中访问http://localhost:16686就会显示Jaeger的主页,具体如下所示:

下来就可以把主流的编程语言可以和Jaeger进行集成从而实现分布式系统中各个服务链路的追踪和分析。感谢您的阅读,后续持续更新Jaeger与主流开发语言框架之间的集成和服务追踪以及服务间的性能分析。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档