链路追踪详解(四):分布式链路追踪的事实标准 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 无疑将在现代软件开发和运维中发挥越来越重要的作用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu20.04在noetic下编译orbslam2

ubuntu20.04在noetic下编译orbslam2 参考链接1:https://blog.csdn.net/qq_58869016/article/details/128660588 参考链接2:https://blog.csdn.net/dong123456789e/article/details/129693837 在noetic下的安装环境 1.库安装 sudo apt-get update sudo …

从零到一:influxdb时序性数据库的基本概念与操作指南

目录 ​编辑 引言 数据库(database) 创建数据库 删除数据库 进入数据库 展示influxdb中所有数据库 测量(measurement) 写入测量 展示测量 总结 引言 InfluxDB是一个开源的时序数据库,专门设计用于处理时间序列数据。它是由InfluxD…

详解MySQL中一条SQL执行过程

MySQL基本架构 如下图所示,从宏观角度来说MySQL架构可以分为server层和存储引擎层,其中Server层包含如下: 连接器:进行身份认证和权限相关校验。查询缓存:MySQL8.0已废弃,查询缓存主要是用于提高查询效率而加的一层缓存。分析器:对SQL执行动…

React中类组件和函数组件的区别?

面试官:说说对React中类组件和函数组件的理解?有什么区别? 一、类组件 类组件,顾名思义,也就是通过使用ES6类的编写形式去编写组件,该类必须继承React.Component 如果想要访问父组件传递过来的参数&#…

winform使用CefSharp嵌入VUE网页并交互

1、NuGet添加CefSharp 如果下载慢或失败可以更新下载源 腾讯资源https://mirrors.cloud.tencent.com/nuget/华为资源https://repo.huaweicloud.com/repository/nuget/v3/index.json 2、将项目平台改为X64 3、在winform窗体添加cef using CefSharp; using CefSharp.WinForms; u…

TSINGSEE青犀基于opencv的安全帽/反光衣/工作服AI检测算法自动识别及应用

安全帽/反光衣/工作服自动识别检测算法可以通过opencvyolo网络对现场画面中人员穿戴着装进行实时分析检测,判断人员是否穿着反光衣/安全帽。在应用场景中,安全帽/反光衣/工作服检测应用十分重要,通过对人员的规范着装进行实时监测与预警&…

Hexo Butterfly博客添加Google分析

Hexo Butterfly博客添加Google分析 进入谷歌分析官网:https://analytics.google.com/analytics/web/ 如下图所示: 点击开始评估 输入账户名,随便填就行,点击下一步 输入属性名称(随便填),填上你的博客域名,点击下一步 剩下的步骤按自己的情况填就行 最后会弹出一个弹窗,上面…

Spring相关面试题

文章目录 1.Spring用到了哪些设计模式?2.Spring支持几种bean的作用域3.单例bean是线程安全的吗?4.Spring如何处理线程并发问题的?5. Component, Controller, Repository,Service有什么区别?6. Resource 和 Autowired这两个注解有什…

城轨线路列车时刻表与车站客流控制协同优化方法

文章信息 论文题目为《城轨线路列车时刻表与车站客流控制协同优化方法》,该文于2021年发表于《交通运输系统工程与信息》上。文章考虑换入客流影响下列车时刻表与客流控制的协同优化问题,以最小化乘车延误人数为目标,以列车时刻表、客流控制和…

网络基础(九):VLAN的概述及配置

目录 前言 一、分割广播域的方法 二、VLAN 1、VLAN的概述及优势 1.1VLAN的概述 1.2VLAN的优势 2、VLAN的种类 3、VLAN的三种端口类型 4、VLAN 的工作原理 4.1VLAN数据帧 4.2VLAN的范围 4.2VLAN的access类型工作原理 4.3VLAN的trunk类型工作原理 4.4VLAN的Hybird类…

简单使用selenium抓取微博热搜话题存储进Excel表格中

#test.pyimport requests from selenium import webdriver import time from write import write#首先打开浏览器 drive webdriver.Chrome()#设置隐式等待:等待元素找到,如果找到元素则马上继续执行语句,如果找不到元素,会在设定…

机器人行业数据闭环实践:从对象存储到 JuiceFS

JuiceFS 社区聚集了来自各行各业的前沿科技用户。本次分享的案例来源于刻行,一家商用服务机器人领域科技企业。 商用服务机器人指的是我们日常生活中常见的清洁机器人、送餐机器人、仓库机器人等。刻行采用 JuiceFS 来弥补对象存储性能不足等问题。 值得一提的是&am…

C/C++: 关键路径

关键路径在找最早发生时间的时候要正着找,找最晚发生时间的时候要找到最后一个终点的最早发生时间后,倒着减去每个边的权值,就是各点的最晚发生时间。 具体注释在文中。 /** * * Althor: Hacker Hao * Create: 2023.12.13 /!ATTENTION!/ …

使用Python监控服务器在线状态

前言 在公司内网有一台服务器,有动态的公网IP,使用DDNS对外提供服务,但是会因为停电、服务器卡死等原因导致服务器离线。服务器离线后无法及时获知,因此需要实现在服务器离线的时候能够发送消息到手机上。 思路梳理 公司办理的…

【JAVA】黑马MybatisPlus 学习笔记【二】【核心功能】

2.核心功能 刚才的案例中都是以id为条件的简单CRUD,一些复杂条件的SQL语句就要用到一些更高级的功能了。 2.1.条件构造器 除了新增以外,修改、删除、查询的SQL语句都需要指定where条件。因此BaseMapper中提供的相关方法除了以id作为where条件以外&…

java面试题-Spring事务以及@Transactional注解详解

远离八股文,面试大白话,通俗且易懂 看完后试着用自己的话复述出来。有问题请指出,有需要帮助理解的或者遇到的真实面试题不知道怎么总结的也请评论中写出来,大家一起解决。 java面试题汇总-目录-持续更新中 对于这个面试中高频问到…

关于“Python”的核心知识点整理大全18

目录 ​编辑 8.5 传递任意数量的实参 pizza.py 8.5.1 结合使用位置实参和任意数量实参 8.5.2 使用任意数量的关键字实参 user_profile.py 8.6 将函数存储在模块中 8.6.1 导入整个模块 pizza.py making_pizzas.py 8.6.2 导入特定的函数 8.6.3 使用 as 给函数指定别名…

[Vulnhub靶机] DriftingBlues: 7

[Vulnhub靶机] DriftingBlues: 7靶机渗透思路及方法(个人分享) 靶机下载地址: https://download.vulnhub.com/driftingblues/driftingblues7_vh.ova 靶机地址:192.168.67.25 攻击机地址:192.168.67.3 一、信息收集 …

苹果电脑双开

1.第一步:在应用程序中找到微信 复制一个副本出来 2.第二步:打开复制的《微信副本》 右键打开 – 显示包内容 3.第三步:Contents - info.plist 后右键 打开方式 选择 文本编辑 4.第四步:找到查找和替换 这一段com.tencent.xinWeChat 后面是修改 com.tenc…

微软AutoGen框架:AI的新时代,你的新机遇

一、引言 在科技日新月异的今天,人工智能已经深入到我们生活的各个角落。无论是智能手机、智能家居还是自动驾驶汽车,人工智能的应用无处不在。而在这个领域中,微软AutoGen框架无疑是一颗璀璨的新星。它以其独特的创新性和实用性&#xff0c…