Jaeger 分布式追踪系统模块分析

Jaeger是一款由Uber推出的开源分布式追踪系统,兼容OpenTracing API,主要用于监控和管理应用性能。系统包括Jaeger Client、Agent、Collector、Data Store和Query组件,其中Agent通过UDP接收span数据,Collector负责数据存储,Query提供查询展示。Jaeger的架构设计允许跨进程追踪,通过Thrift协议处理数据,支持Cassandra和Elasticsearch等后端存储。
摘要由CSDN通过智能技术生成

 

  1. 概述

APM(Application Performance Managerment)系统致力于监控和管理应用软件性能和可用性。通过检测和诊断复杂应用程序的性能问题。来保证软件应用程序的良好运行与预期的服务。

           容器和Serverless编程方式的诞生极大提升了软件交付和部署的效率。APM系统为了应对这种变化趋势,诞生了一系列面向DevOps的诊断和分析系统。包括集中式日志系统(Logging),集中式度量系统(Metrics)和分布式追踪系统(Tracing)。

           分布式追踪系统用于记录请求范围内的信息。例如,一次远程方法调用的执行过程和耗时。是我们排查系统问题和系统性能的利器。

           分布式追踪系统种类繁多,但是核心步骤有三个:代码埋点,数据存储和查询展示。

           为了解决不同的分布式追踪系统API不兼容的问题,诞生了OpenTracing规范。

           OpenTracing是一个轻量级的标准化层,它位于应用程序/类库和追踪或日志分析程序之间。

下面介绍一下OpenTracing的数据模型:

    OpenTracing 中的 Trace(调用链)通过归属于此调用链的 Span 来隐性的定义。

特别说明,一条 Trace(调用链)可以被认为是一个由多个 Span 组成的有向无环图(DAG图),Span 与 Span 的关系被命名为 References。

例如:下面的示例 Trace 就是由8个 Span 组成:

有些时候,使用下面这种,基于时间轴的时序图可以更好的展现 Trace(调用链):

 

每个 Span 包含以下的状态: 
operation name: 操作名称
start timestamp: 起始时间
finish timestamp: 结束时间
Span Tag: 一组键值对构成的 Span 标签集合。键值对中,键必须为 string,值可以是字符串,布尔,或者数字类型。
Span Log: 一组 span 的日志集合。每次 log 操作包含一个键值对,以及一个时间戳。键值对中,键必须为 string,值可以是任意类型。但是需要注意,不是所有的支持 OpenTracing 的 Tracer,都需要支持所有的值类型。
SpanContext: Span 上下文对象 (下面会详细说明)。
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值