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

分布式链路追踪工具-Jaeger

作者头像
互联网金融打杂
发布2022-08-01 13:20:49
1.2K0
发布2022-08-01 13:20:49
举报
文章被收录于专栏:测试开发架构之路

持续坚持原创输出,点击蓝字关注

作者:软件质量保障 知乎:https://www.zhihu.com/people/iloverain1024

什么是 Jaeger?

Jaeger 是用于追踪分布式服务之间事务的开源软件,它为微服务场景而生。它主要用于分析多个服务的调用过程,图形化服务调用轨迹,是诊断性能问题、分析系统故障的利器。

什么是分布式跟踪?

分布式跟踪是用来查看和了解复杂的微服务间交互中的整个活动链。

现代的云原生软件开发十分依赖微服务,因为每个独立的服务都提供不同的核心功能。当用户在应用中发出请求时,许多单独的服务都会做出响应,产生相应的结果。

应用中的一个调用可能会涉及几十项彼此交互的服务。当出现问题或某个请求变慢时,开发和测试人员该如何查明问题所在?所以我们需要一种能跟踪所有连接的方法。这就是分布式跟踪的意义所在。它通常是作为服务网格(管理和监控微服务的一种方式)的一部分运行。

Jaeger 使用分布式跟踪来了解不同微服务的请求路径。我们可以直观地看到调用流,无需凭空猜测。

整理有序的事务信息对于调试和优化而言非常有用。Jaeger 内含的工具可用于监控分布式事务、优化性能和延迟以及执行根本原因分析(RCA)。

Jaeger 架构及术语

Jaeger 将执行请求显示为一条条迹线trace)。

  • 迹线代表系统中的数据/执行路径。一个迹线包含一个或多个跨度(span)。
  • 跨度是 Jaeger 中作业的逻辑单元。每个跨度都由作业名称、开始时间和持续时间组成。跨度可以进行嵌套和排序。

Jaeger 内含多个组件,这些组件可以协同工作,一起收集、存储和可视化跨度与迹线。

  • Jaeger-client 包括含用于分布式跟踪的 OpenTracing API 的特定语言实施。Jaeger客户端代码库,便于不同语言的项目来介入到Jaeger中,当我们的应用程序装载上之后,client会负责收集并发送数据到Agent。
  • Jaeger-agent 是一个网络守护进程,可侦听通过用户数据报协议发送的跨度。该代理应与所检测的应用放置在同一主机上。这通常是通过 Kubernetes 等容器环境中的 sidecar 实现的。
  • Jaeger-collector 从agent收集traces信息,并通过处理管道处理他们,再写入后端存储(backends)。当前的collector工作主要是管理trace,建立索引,执行相关转换,并最终存储它们。
  • Jaeger 控制台是用于直观查看分布式跟踪数据的用户界面。Query查询是一种从存储中检索trace,并提供UI以显示它们的服务。上图中就展示了一次Trace的数据流向,作为一次系统作用的数据传播/执行图,即可以在Jaeger UI上展示出来

本地搭建运行

官网下载 https://www.jaegertracing.io/download/ 安装包,解压后本地执行下面执行启动:

代码语言:javascript
复制
./jaeger-all-in-one --collector.zipkin.host-port=:9411

本地打开 http://127.0.0.1:16686/search,即可看到如下页面

Jaeger UI 可以使我们更好地利用这个强大的分布式服务追踪工具。

搜索页面:

我们可以使用搜索窗格搜索具有特定属性的trace:它们来自哪个服务、进行了哪些操作、跟踪中包含的特定标签(例如,http 状态代码)、响应多长时间。

在此窗格中完成自定义搜索后,单击 Find Traces。

搜索结果如下:

在本例中,我选择查询 jaeger-query 服务。我可以在时间线或列表中看到我的trace。单击所需的trace以深入了解它。

具体trace视图如下,当我们找到可能存在问题的trace并单击它时,看到如下所示内容:

在这里,我们可以找到有关执行时间、进行了哪些调用、它们的响应时间、http 状态代码、路由路径(在 http 调用的情况下)等特定属性的特定信息。

此外,jaeger还提供trace比对功能,感兴趣的同学可以尝试动手做一下。

总结一下吧,jaeger可以改变测试工程师传统的在服务器上捞错误日志排查问题的方式,因为每一笔请求对应唯一的链路,我们可以基于trace去排查这笔请求的链路上可能存在的问题。

- END -


本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 持续坚持原创输出,点击蓝字关注
  • 什么是 Jaeger?
  • 什么是分布式跟踪?
  • Jaeger 架构及术语
  • 本地搭建运行
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档