作者:软件质量保障 知乎:https://www.zhihu.com/people/iloverain1024
Jaeger 是用于追踪分布式服务之间事务的开源软件,它为微服务场景而生。它主要用于分析多个服务的调用过程,图形化服务调用轨迹,是诊断性能问题、分析系统故障的利器。
分布式跟踪是用来查看和了解复杂的微服务间交互中的整个活动链。
现代的云原生软件开发十分依赖微服务,因为每个独立的服务都提供不同的核心功能。当用户在应用中发出请求时,许多单独的服务都会做出响应,产生相应的结果。
应用中的一个调用可能会涉及几十项彼此交互的服务。当出现问题或某个请求变慢时,开发和测试人员该如何查明问题所在?所以我们需要一种能跟踪所有连接的方法。这就是分布式跟踪的意义所在。它通常是作为服务网格(管理和监控微服务的一种方式)的一部分运行。
Jaeger 使用分布式跟踪来了解不同微服务的请求路径。我们可以直观地看到调用流,无需凭空猜测。
整理有序的事务信息对于调试和优化而言非常有用。Jaeger 内含的工具可用于监控分布式事务、优化性能和延迟以及执行根本原因分析(RCA)。
Jaeger 将执行请求显示为一条条迹线(trace)。
Jaeger 内含多个组件,这些组件可以协同工作,一起收集、存储和可视化跨度与迹线。
官网下载 https://www.jaegertracing.io/download/ 安装包,解压后本地执行下面执行启动:
./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 -