• 分布式链路追踪工具Jaeger


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

    作者:软件质量保障
    知乎: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/ 安装包,解压后本地执行下面执行启动:

    ./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 -


    关注 软件质量保障,与质量君一起学习成长、共同进步,做一个职场最贵Tester!

    往期推荐

    聊聊工作中的自我管理和向上管

    经验分享|测试工程师转型测试开发历程

    聊聊UI自动化的PageObject设计模式

    细读《阿里测试之道》

    我在阿里做测开

  • 相关阅读:
    常见数据结构考题
    [转]Win7 系统安装VS2008没反应 点击安装一闪就没有反应 .
    [转]40个实习生最基本的规矩
    [转]C++中重载(overload)、覆盖(override)、隐藏(hide)的区别
    iPhone开源项目
    eclipse快捷键
    [转]cocos2d游戏开发,常用工具集合
    discuz中常用的一些东西
    抽象类与接口的区别
    Head.First设计模式学习笔记
  • 原文地址:https://www.cnblogs.com/iloverain/p/16515075.html
Copyright © 2020-2023  润新知