链路追踪详解(四):分布式链路追踪的事实标准 OpenTelemetry 概述

目录

OpenTelemetry 是什么?

OpenTelemetry 的起源和目标

OpenTelemetry 主要特点和功能

OpenTelemetry 的核心组件

OpenTelemetry 的工作原理

OpenTelemetry 的特点

OpenTelemetry 的应用场景

小结


OpenTelemetry 是什么?

OpenTelemetry 是一个为实现可观测性的开源的框架和工具集,用于创建和管理遥测数据,例如 traces,、metrics 和 logs,旨在提供统一的解决方案来满足分布式系统的可观察性需求。OpenTelemetry 整合了 OpenCensus 和 OpenTracing 的功能,并扩展了更多的度量指标和追踪信息采集能力,使分布式系统的可观测性变得更加简单、可扩展和可互操作。OpenTelemetry 与提供可观测性产品的供应商无关,可以与各种各样的可观测性后端一起使用,包括像 Zipkin、Jaeger、Prometheus 等开源产品,以及其他商业产品。OpenTelemetry 也是是云原生计算基金会(CNCF)的一个托管项目。

OpenTelemetry 的起源和目标

随着云计算、微服务架构和日益复杂的业务需求的兴起,对可观测性的需求也越来越大,可观测性是通过检查分析系统的输出内容来了解其内部状态的能力。

最初,开发者使用日志来解决这个问题,但很快发现通过日志不能够清晰地看到一次请求是如何被处理和流转的。为了解决这些问题,Google 开发了 Dapper 布式系统追踪的框架,Dapper 的思想启发了很多公司和开源项目,如 OpenTracing 和 OpenCensus,它们提供了标准化的 API 和库,以帮助开发者在他们的应用中实现分布式链路追踪和指标收集。

然而,随着这两个项目的发展,社区意识到存在一些重叠和不一致的地方。因此,OpenTracing 和 OpenCensus 合并为 OpenTelemetry,以创建一个统一的、更强大的工具集,不仅包含了 traces 和 metrics,还包括了 logs。

在软件系统中,可以通过检查遥测数据(包括 traces,、metrics 和 logs)了解系统的内部状态。为了实现系统的可观测性,必须对系统进行检测。也就是说,代码需要能产生 traces、metrics 和 logs,并将这些数据发送到可观测性后端。

OpenTelemetry 主要特点和功能

  1. 统一的观察性标准:OpenTelemetry 提供了一套统一的观测性标准,使得不同厂商和工具之间的数据可以相互兼容和共享,有助于减少开发和运维人员在系统集成方面的成本和难度。
  2. 丰富的度量指标和追踪信息:OpenTelemetry 支持采集丰富的度量指标和追踪信息,包括跟踪数据(traces)、指标数据(metrics)、日志数据(logs)。这些数据可以用于分析系统的性能、行为和问题,帮助开发人员更好地了解系统运行状况。
  3. 灵活的数据采集和导出:OpenTelemetry 支持多种数据采集和导出的方式,包括直接从应用程序中采集数据、从日志文件中导入数据、或者通过代理(agent)从远程系统中采集数据。还提供了对常见数据格式和协议的支持,如 Prometheus、Zipkin、Jaeger 等。
  4. 可扩展的插件式架构:OpenTelemetry 采用插件式架构,允许用户根据需要定制和扩展其功能。开发者可以通过编写插件来支持新的数据格式、导出工具或传输协议。这种可扩展性使得 OpenTelemetry 能够适应不同的使用场景和需求。
  5. 开源社区和生态系统:OpenTelemetry 是一个开源项目,拥有活跃的社区和生态系统。开发者可以参与开源项目的开发、贡献代码、解决问题、讨论使用经验等。此外,OpenTelemetry 还提供了丰富的文档、教程和示例,帮助用户快速上手和使用。

OpenTelemetry 的核心组件

OpenTelemetry 主要由以下几个核心组件构成:

  • API:定义了收集遥测数据的接口,使开发者能够编写可插拔的代码,以便在不同的遥测系统之间切换,而无需更改应用程序的主体代码。
  • SDK:是对 API 的实现,用来实现对遥测数据的收集、处理和导出。SDK 通常是可配置的,允许开发者调整数据收集的粒度和性能影响。
  • Instrumentation Libraries:这些库提供了对常见框架和库的自动插桩支持,以便开发者无需手动编写大量的遥测代码。
  • Collector:是一个独立的服务,可以接收、处理和导出遥测数据。可以部署为代理或作为后端服务的一部分,以接收来自应用程序的遥测数据。
  • Exporters:借助不同的 Exporter 可以使 SDK 或 Collector 将遥测数据导出到各种后端系统,如 Prometheus、Jaeger、Zipkin 等。

OpenTelemetry 的工作原理

OpenTelemetry 的工作原理可以分为以下几个步骤:

  1. 自动插桩:开发者通过将 OpenTelemetry 的 Instrumentation Libraries 集成到自己的应用程序中,自动地在代码的关键路径上收集遥测数据。
  2. 数据收集与处理:借助 Instrumentation Libraries 收集到相应数据后,通过 SDK 进行进一步的处理,如聚合、过滤和批处理,以优化性能和数据传输。
  3. 数据导出:处理后的数据通过 Exporters 发送到指定的后端系统,可以是专门的链路追踪系统、时序数据库或者日志系统。

OpenTelemetry 的特点

OpenTelemetry 的设计考虑了现代应用的需求:

  • 开源和跨语言:支持多种编程语言和框架,适用于多样化的开发环境。
  • 可扩展性:通过 Exporters 和自定义 SDK 配置,可以轻松地适配不同的后端系统。
  • 端到端追踪:提供了在复杂的分布式系统中跟踪请求的能力,对于微服务架构来说也非常实用。
  • 性能考量:SDK 提供了数据采样和处理的功能,将对应用性能的影响降到最低。

OpenTelemetry 的应用场景

OpenTelemetry 可以应用于多种场景,包括但不限于:

  • 微服务监控:在微服务架构中,可以使用 OpenTelemetry 来跟踪跨服务的请求,并收集服务的性能指标。
  • 云原生应用:为 Kubernetes 和其他云原生技术提供了强大的监控和追踪能力。
  • 故障排查:当出现性能下降或请求错误时,OpenTelemetry 可以帮助快速定位问题。

小结

OpenTelemetry 代表了分布式链路追踪和监控的未来方向,目标是简化和统一遥测数据的收集和管理,随着社区的不断发展和技术的成熟,OpenTelemetry 无疑将在现代软件开发和运维中发挥越来越重要的作用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/219703.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DevEco Studio 鸿蒙(HarmonyOS)项目结构

DevEco Studio 鸿蒙(HarmonyOS)项目结构 一、操作环境 操作系统: Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、项目结构 创建简单的Hello World移动应用项目结构如下图 由上到下说明各个文件夹的作用 .hvigor:存…

阅读笔记——《UTOPIA: Automatic Generation of Fuzz Driverusing Unit Tests》

【参考文献】Jeong B, Jang J, Yi H, et al. UTOPIA: automatic generation of fuzz driver using unit tests[C]//2023 IEEE Symposium on Security and Privacy (SP). IEEE, 2023: 2676-2692.【注】本文仅为作者个人学习笔记,如有冒犯,请联系作者删除。…

智慧储能数字孪生:能源未来的智慧引擎

随着社会对清洁能源的需求不断增加,智能储能技术成为能源转型的关键驱动力。在这一领域中,数字孪生技术的应用为智慧储能带来了全新的可能性。数字孪生是指数字化、实时、可视化的模拟系统,通过复制现实世界中的对象或过程,为智能…

SpeechGPT领航:创新的130亿参数跨模态AI模型

引言 在人工智能的最新进展中,SpeechGPT以其130亿参数的规模和跨模态会话能力引起了业界的广泛关注。这一由复旦大学邱锡鹏教授团队开发的模型,不仅在技术层面上取得了重大突破,也为多模态人工智能(AI)的未来发展指明…

力扣120. 三角形最小路径和

动态规划 思路: 假设 dp[i][j] 为最小路径到第 i 层的第 j 个元素的值;则 dp[i][j] min(dp[i - 1][j - 1], dp[i - 1][j]) tr[i][j];当 j 0 时,dp[i][j] dp[i - 1][0] tr[i][0];(可以认为 j - 1 不能…

目标检测YOLO实战应用案例100讲-基于深度学习的跌倒检测(续)

目录 3.3 基于YOLOv7算法的损失函数优化 3.3.1 IoU损失策略 3.3.2 GIoU回归策略 3.3.3

Selenium库自动化测试入门

前言 为什么要学selenium??前面已经学了requests库我们会发现 对于绝大多数动态渲染的网页来说,用requests进行爬虫比较繁琐。 所以我们还是要学习一下selenium库,以帮助我们更高效的爬取网页。 环境: pychar 202…

Linux--绝对路径和相对路径

1. 绝对路径 从根目录算起的路径叫做绝对路径 例如: /home/python/Desktop/usr/bin 2. 相对路径 从当前目录算起的路径叫做相对路径 例如: ./test/hello../static/images 3. 绝对路径和相对路径的使用 使用绝对路径切换到桌面 cd /home/python/Desktop 在下载目录以相…

机器学习算法新手入门指南

AI算法的种类在人工智能领域中非常丰富,而且多样化,AI算法利用数学、统计学和计算机科学等领域的原理和方法,通过模拟人类智能和学习能力来解决各种复杂的问题。 在监督学习领域,我们有经典的线性回归和逻辑回归算法,…

光栅化渲染:可见性问题和深度缓冲区算法

在前面第二章中,我们了解到,在投影点(屏幕空间中的点)的第三个坐标中,我们存储原始顶点 z 坐标(相机空间中点的 z 坐标): 当一个像素与多个三角形重叠时,查找三角形表面上…

Java 多线程之线程安全集合

文章目录 一、概述二、List 接口线程安全实现类2.1 普通 List 变线程安全 List2.2 Vector2.3 CopyOnWriteArrayList 三、Map 接口线程安全实现类3.1 普通 Map 变线程安全 Map3.2 Hashtable3.3 ConcurrentHashMap3.4 ConcurrentSkipListMap 有序/跳表 四、Set 接口线程安全实现类…

J2EE(架构师考试复习资料)

J2EE 是针对 Web Service、业务对象、数据访问和消息报传送的一组规范。这组应用编程接口确定了 Web 应用与驻留它们的服务器之间的通信方式。J2EE 注重两件事,一是建立标准,使 Web 应用的部署与服务器无关;二是使服务器能控制构件的生命周期…

前端传的true后端变false?

前端传来true,后端变成false? 背景:原因分析:解决: 背景: 最近在搞项目的时候遇到了神奇的东西,后端定了了boolean类型的变量,前端在传值的时候传的是true,但是到了后端…

自定义Mybatis LanguageDriver性能优化

场景:高并发情况下mybatis 动态sql 解析 锁问题优化 优化前 并发测试 XMLLanguageDriver 类 的 createSqlSource 方法有锁 而且 每次执行时都会走该方法 优化前 : 线程有Block 优化后的 LanguageDriver public class CustomXMLLanguageDriver im…

uniapp 使用wgt包实现热更新具体实现代码

uniapp 使用wgt包实现热更新具体实现代码 参考文档:https://ask.dcloud.net.cn/article/35667 app.vue 在onLaunch生命周期里面调用 import { GetRefres } from /utils/hot-refresh; onLaunch(() > {// #ifdef APP-PLUSGetRefres();// #endif });utils/hot-r…

CENTOS 安装zookeeper

1,下载 release地址:Apache ZooKeeper 地址:https://dlcdn.apache.org/zookeeper/zookeeper-3.8.3/apache-zookeeper-3.8.3-bin.tar.gz 2,安装 # 解压并进入解压目录 tar zxvf apache-zookeeper-3.8.3-bin.tar.gz -C /usr/local…

Vue3 实现图片的帧动画方案分享

一、纯 JS &#xff08;有性能问题会卡顿&#xff09; <div class"robot-box"><img ref"robotImgRef" src"/Greet/Greet_00000.png" alt"" /></div>const delay 30; const imgCount 109; let i 0; const robotIm…

大数据机器学习与深度学习——回归模型评估

大数据机器学习与深度学习——回归模型评估 回归模型的性能的评价指标主要有&#xff1a;MAE(平均绝对误差)、MSE(平均平方误差)、RMSE(平方根误差)、R2_score。但是当量纲不同时&#xff0c;RMSE、MAE、MSE难以衡量模型效果好坏&#xff0c;这就需要用到R2_score。 平均绝对…

AI 问答-供应链管理-相关概念:SCM、SRM、MDM、DMS、ERP、OBS、CRM、WMS...

一、供应链管理是什么 供应链管理&#xff1a;理解供应链管理_snowli的博客-CSDN博客 二、SCM 供应链管理 SCM全称为“Supply Chain Management”&#xff0c;即供应链管理。 SCM是企业管理范畴中一个非常重要的概念&#xff0c;指的是企业与供应商、生产商、分销商等各方之…

Python实现多种图像锐化方法:拉普拉斯算子和Sobel算子

Python实现多种图像锐化方法&#xff1a;拉普拉斯算子和Sobel算子 图像和视频逐渐成为人们生活中信息获取的重要来源&#xff0c;而图像和视频在传输过程中有很多因素可能造成图像模糊&#xff0c;比如不正确的聚焦会产生离焦模糊&#xff0c;景物和照相机的相对运动会造成运动…