开源分布式系统追踪-03-CNCF jaeger-01-入门介绍

news/2024/12/14 17:11:28/

分布式跟踪系列

CAT

cat monitor 分布式监控 CAT-是什么?

cat monitor-02-分布式监控 CAT埋点

cat monitor-03-深度剖析开源分布式监控CAT

cat monitor-04-cat 服务端部署实战

cat monitor-05-cat 客户端集成实战

cat monitor-06-cat 消息存储

skywalking

监控-skywalking-01-APM 监控入门介绍

监控-skywalking-02-深入学习 skywalking 的实现原理的一些问题

监控-skywalking-03-深入浅出介绍全链路跟踪

监控-skywalking-04-字节码增强原理

监控-skywalking-05-in action 实战笔记

监控-skywalking-06-SkyWalking on the way 全链路追踪系统的建设与实践

其他

开源分布式系统追踪-00-overview

开源分布式系统追踪-01-Zipkin-01-入门介绍

开源分布式系统追踪 02-pinpoint-01-入门介绍

开源分布式系统追踪-03-CNCF jaeger-01-入门介绍

Jaeger

欢迎来到 Jaeger 文档!

在下面,您将找到适用于Jaeger初学者和有经验用户的信息。如果您找不到所需内容,或遇到未涵盖的问题,我们非常希望听到您的反馈。

关于

Jaeger是一个分布式追踪平台,由Uber Technologies于2016年发布为开源项目,并捐赠给Cloud Native Computing Foundation(CNCF),目前已成为CNCF的毕业项目。

通过Jaeger,您可以:

  • 监控和排查分布式工作流
  • 识别性能瓶颈
  • 查找根本原因
  • 分析服务依赖关系

了解更多

如果您是分布式追踪的新手,建议参考以下外部资源:

  • 《Mastering Distributed Tracing (2019)》:由Jaeger的创始人Yuri Shkuro编写,书中深入讲解了Jaeger的设计和操作方面的内容,以及分布式追踪的基本概念。

  • 《Take Jaeger for a HotROD ride》:这是一个分步教程,展示了如何使用Jaeger来解决应用程序性能问题。

  • 《Introducing Jaeger》:一场介绍Jaeger及其功能的(较老)网络研讨会。

  • 《Evolving Distributed Tracing at Uber》:这篇博客文章讲解了Jaeger的历史及其架构选择背后的原因。

Jaeger v2

(2024-11-12) Jaeger作为领先的开源分布式追踪平台,已经有9年的成功历史,并且与OpenTracing和OpenTelemetry等行业标准化工作紧密对接。

Jaeger是Cloud Native Computing Foundation(CNCF)首批毕业的项目之一。

经过超过60个版本的发布,Jaeger迎来了一个重要的里程碑——Jaeger v2的发布。Jaeger v2采用了OpenTelemetry Collector框架作为基础,并在此基础上扩展实现了Jaeger独特的功能。

它带来了显著的改进和变化,使Jaeger更加灵活、可扩展,并与OpenTelemetry项目更好地对接。详细内容请阅读完整的文章。

有关从Jaeger v1迁移到Jaeger v2的详细信息,请参阅迁移指南。

特性

  • 基于OpenTracing的数据模型

  • 兼容OpenTelemetry

  • 多个内置存储后端:

    • Cassandra 4+
    • Elasticsearch 7.x, 8.x
    • Badger
    • Kafka(作为中间缓冲)
    • 内存存储
  • 通过远程存储API支持自定义后端扩展

  • 系统拓扑/服务依赖关系图

  • 自适应采样

  • 服务性能监控(SPM)

  • 数据收集后的处理

欲了解更多详情,请参阅功能页面。

截图

Traces View

Traces

Trace Detail View

Trace Detail View

Service Performance Monitoring View

Service Performance Monitoring View

特性

高扩展性

Jaeger 后端设计时考虑到没有单点故障,并能根据业务需求进行扩展。

例如,Uber 的 Jaeger 安装通常每天处理数十亿个 span。

云原生

Jaeger 后端以容器镜像或原生二进制文件的形式发布,支持多个平台。二进制文件的行为可以通过 YAML 配置文件进行定制。部署到 Kubernetes 集群的过程由 Kubernetes Operator 和 Helm Chart 协助完成。

OpenTelemetry

Jaeger 后端和 Web UI 从一开始就设计为支持 OpenTracing 标准。

  • 通过 span 引用将追踪表示为有向无环图(而不仅仅是树)
  • 支持强类型的 span 标签和结构化日志
  • Jaeger 可以接收标准的 OpenTelemetry 协议(OTLP)中的追踪数据。然而,内部数据表示和 UI 仍遵循 OpenTracing 规范的模型。

多种存储后端

Jaeger 支持越来越多的存储后端:

  • 原生支持流行的开源 NoSQL 数据库作为追踪存储后端:Cassandra 4.0+、Elasticsearch 7.x/8.x 和 OpenSearch 1.0+。
  • 通过远程存储 API 可扩展支持其他经过 Jaeger 兼容认证的数据库,例如 ClickHouse。
  • 支持嵌入式数据库,如 Badger 和简单的内存存储,用于测试环境。
  • 社区正在进行一些实验,使用其他数据库,更多内容可参见该问题。

采样

为了控制应用程序的开销和存储成本,Jaeger 支持多种形式的采样:基于头部的采样(集中式远程配置,静态或自适应)和基于尾部的采样。有关更多信息,请参阅采样页面。

现代 Web UI

Jaeger Web UI 采用 JavaScript 实现,基于 React。v1.0 版本发布了几项性能改进,使 UI 能有效处理大量数据,并显示包含数万个 span 的追踪(例如,我们尝试了一个包含 80,000 个 span 的追踪)。

可观测性

所有 Jaeger 后端组件默认会暴露 Prometheus 指标。日志使用结构化日志库 zap 写入 stdout。

拓扑图

Jaeger UI 支持两种类型的服务图:系统架构图和深度依赖关系图。

系统架构图

这是一个“经典”的服务依赖关系图,显示架构中所有服务的依赖关系。该图仅表示服务之间的一跳依赖,类似于从服务网格产生的遥测数据。例如,图中的 A - B - C 意味着存在一些追踪记录了 A 和 B 之间的网络调用,还有一些追踪记录了 B 和 C 之间的调用。然而,这并不意味着存在从 A 到 C 的完整链条,即不能说 A 依赖于 C。

此图的节点粒度仅为服务,而非服务端点。

系统架构图可以通过内存存储实时构建,或者在使用分布式存储时,通过 Spark 或 Flink 任务构建。

深度依赖关系图

也称为“传递依赖图”,其中 A -> B -> C 意味着 A 对 C 存在传递依赖。单个图需要一个“焦点”服务(以粉色显示),并且仅显示通过该服务的路径。通常,这种类型的图不表示系统的完整架构,除非存在一个与所有服务连接的服务(例如 API 网关),并将其选为焦点服务。

此图的节点粒度可以在服务和服务端点之间切换。在后者模式下,同一服务中的不同端点将作为单独的节点显示,例如 A::op1 和 A::op2。

目前,传递依赖图只能通过追踪搜索结果构建。未来将会有一个 Flink 任务,通过汇总所有追踪来计算这些图。

服务性能监控(SPM)

SPM 允许通过计算追踪的汇总指标,并将其可视化为时间序列图表,来监控和调查服务性能的趋势。

它是一个强大的工具,可以帮助识别和调查性能问题。

有关更多详细信息,请参阅服务性能监控(SPM)页面。

Zipkin 兼容性

虽然我们推荐使用 OpenTelemetry 对应用程序进行编码,但如果您的组织已经使用 Zipkin 库进行仪器化,您不必重写所有代码。

Jaeger 提供与 Zipkin 的向后兼容性,可以通过 HTTP 接收 Zipkin 格式的 span(Thrift、JSON v1/v2 和 Protobuf)。

从 Zipkin 后端切换到 Jaeger 后端,只需将流量从 Zipkin 库路由到 Jaeger 后端即可。

参考资料

https://www.jaegertracing.io/docs/2.1/


http://www.ppmy.cn/news/1555073.html

相关文章

MongoDB-ObjectID 生成器

前言 MongoDB中一个非常关键的概念就是 ObjectID,它是 MongoDB 中每个文档的默认唯一标识符。了解 ObjectID 的生成机制不仅有助于开发人员优化数据库性能,还能帮助更好地理解 MongoDB 的设计理念。 什么是 MongoDB ObjectID? 在 MongoDB …

第四章 奠基20 团队述职

最近三周的周会,都只讲了一件事:述职 上周大家完成了绩效自评,公司级的总结完成了,团队内部我另外安排了述职活动。 述职对组织和个人成长非常关键: 闭环思维,半年/年度述职是对之前工作的总结&#xff0…

题目 2778: 判断数正负

题目 2778: 判断数正负 时间限制: 2s 内存限制: 192MB 提交: 12161 解决: 6681 题目描述 给定一个整数N&#xff0c;判断其正负。 输入格式 一个整数N(-109 < N < 109) 输出格式 如果N > 0, 输出positive&#xff1b; 如果N 0, 输出zero&#xff1b; 如果N < 0, 输…

CV(4)--边缘提取和相机模型

前言 仅记录学习过程&#xff0c;有问题欢迎讨论 边缘提取&#xff08;涉及语义分割&#xff09;&#xff1a; 图象的边缘是指图象局部区域亮度变化显著的部分,也有正负之分&#xff0c;暗到亮为正 求边缘的幅度&#xff1a;sobel&#xff0c;Canny算子 图像分高频分量和低…

自然语言处理基础及应用场景

自然语言处理定义 让计算机理解人所说的文本 语音 Imitation Game 图灵测试 行为主义 鸭子理论 自然语言处理的基本任务 词性标注&#xff1a;区分每个词名词、动词、形容词等词性命名实体的识别&#xff1a;名词的具体指代是哪一类事物共指消解&#xff1a;代词指代的是前面…

Hadoop中几种列式存储的区别和联系

第一章 相关理论 1.1 Parquet格式介绍 1.1.1 起源与发展 Parquet&#xff0c;作为Hadoop生态系统中的一种新型列式存储格式&#xff0c;由Cloudera和Twitter公司联手开发&#xff0c;并已跻身至Apache软件基金会的顶级项目之列。自其诞生以来&#xff0c;便以高效的压缩和编…

机器学习环境

如果没有指定 Python 版本&#xff0c;通常建议使用 Python 的最新稳定版本&#xff0c;因为它通常会包含最新的功能和安全修复。对于大多数库来说&#xff0c;Python 3.8、3.9 和 3.10 都是广泛支持的版本。以下是考虑到兼容性和稳定性的改进后的环境配置&#xff1a; 指定 Py…

iOS 环境搭建教程

本文档将详细介绍如何在 macOS 上搭建 iOS 开发环境&#xff0c;以便进行 React Native 开发。&#xff08;为了保证环境一致 全部在网络通畅的情况下运行&#xff09; 1. 安装 Homebrew Homebrew 是 macOS 的包管理工具&#xff0c;我们将通过它来安装开发所需的工具。 安装…