什么是 OpenTelemetry?

OpenTelemetry 定义

OpenTelemetry (OTel) 是一个开源可观测性框架,允许开发团队以单一、统一的格式生成、处理和传输遥测数据(telemetry data)。它由云原生计算基金会 (CNCF) 开发,旨在提供标准化协议和工具,用于收集和路由指标、日志和跟踪到监控平台。

OpenTelemetry 提供与供应商无关的 SDK、API 和工具,因此你的数据可以发送到任何可观测性后端进行分析。

OpenTelemetry 正迅速成为云原生应用程序中占主导地位的可观测性遥测标准。对于希望为未来的数据需求做好准备而不受特定供应商或现有技术限制的组织来说,采用 OpenTelemetry 至关重要。

那么,什么是遥测数据?

遥测数据包括从分布式系统收集的日志指标跟踪。这三类数据被称为 “可观察性支柱”,可帮助开发人员、DevOps 和 IT 团队了解其系统的行为和性能。

  • 日志(logs):日志是系统中在特定时间点发生的离散事件的文本记录。每次执行代码块时都会生成日志条目。它们通常包含显示事件发生时间的时间戳以及上下文负载。日志数据有多种格式,包括纯文本、结构化和非结构化。日志对于故障排除、调试和验证代码特别有用。
  • 指标(metrics):指标是在时间间隔内测量的数值,通常称为时间序列数据。它们包括时间戳、事件名称和事件值等属性。在现代系统中,指标使我们能够监控、分析和响应问题并促进警报。它们可以告诉你有关基础架构或应用程序的信息,例如系统错误率、CPU 利用率或服务请求率。
  • 跟踪(traces):跟踪表示请求通过分布式系统的路径。OpenTelemetry 中的跟踪(traces)由其跨度(spans)定义。一组跨度构成一个跟踪。跟踪可帮助团队了解请求通过各种服务和组件的端到端旅程和行为。分布式跟踪允许你跟踪完整的执行路径并识别导致问题的代码。跟踪提供了对应用程序整体运行状况的可见性,但对其底层基础架构的可见性有限。要全面了解你的环境,你需要可观察性的另外两个支柱:日志和指标。

OpenTelemetry 简史

OpenTracing 和 OpenCensus 是重叠的分布式跟踪项目,它们独立开发,旨在解决缺乏标准化数据格式的问题。OpenTelemetry 的创建是为了合并 OpenTracing 和 OpenCensus 项目的代码库,将每个项目的优势结合到由云原生计算基金会托管的单个项目中。

OpenTracing 提供与供应商无关的 API,用于将数据发送到后端。OpenCensus 是一组特定于语言的库,开发人员用它来检测他们的代码并将数据发送到后端。两者都是开源的,这意味着软件的源代码是协作开发的,任何人都可以使用、修改和分发。

有了 OpenTelemetry,开发人员不再需要在 OpenTracing 和 OpenCensus 之间做出选择。OpenTelemetry 提供了一套统一的库、API、代理和收集器服务,用于收集和传输数据。

OpenTelemetry 如何工作?

OpenTelemetry 提供了一个通用框架,用于收集遥测数据并将其导出到你选择的 Observability 后端。它使用一组标准化、与供应商无关的 API、SDK 和工具来提取、转换和传输数据。

特定于语言的 OpenTelemetry API 协调整个系统的遥测数据收集并检测你的代码。OpenTelemetry SDK 通过帮助数据收集、处理和导出的库实现和支持 API。OpenTelemetry 还提供服务的自动检测并支持自定义检测。你可以使用供应商提供的导出器或 OpenTelemetry 协议 (OpenTelemetry protocol - OTLP) 导出遥测数据。

OpenTelemetry 的核心组件

OpenTelemetry 的核心组件包括:

收集器

OpenTelemetry 收集器是一个与供应商无关的代理,用于接收、处理和导出遥测数据。它支持接收多种格式的遥测数据,以及在导出之前处理和过滤遥测数据。

语言 SDK

OpenTelemetry 语言 SDK 允许你使用 OpenTelemetry API 生成语言遥测数据并将数据导出到后端。

检测库

OpenTelemetry 支持各种组件,这些组件可从受支持语言的流行库和框架中生成相关的遥测数据。

自动检测

OpenTelemetry 的特定语言实现可以提供一种无需更改源代码即可检测应用程序的方法。

导出器

通过将检测与后端配置分离,导出器可以更轻松地更改后端而无需更改检测。它们还允许你将遥测上传到多个后端。

OpenTelemetry 的优势

OpenTelemetry 的优势在于数据标准化和面向未来的灵活性,从而提高了可观察性、提高了效率并降低了成本。

数据收集标准化

OpenTelemetry 为 DevOps 团队提供了一种解决方案,他们希望以一致的方式收集遥测数据并将其导出到 Splunk、New Relic、Dynatrace 和 Datadog 等后端,而无需更改检测。借助开放标准和标准化数据收集,OpenTelemetry 可以提高可见性并简化可观察性。借助更易于设置的可观察性,团队可以更好地了解系统运行状况、识别性能问题并减少在服务中断之前修复根本原因所需的时间。使用 OpenTelemetry 的组织/单位无需浪费时间开发内部解决方案或研究用于多个应用程序的单个工具。通过减少噪音、成本和配置更改的需求,OpenTelemetry 使组织能够专注于利用数据,而不是数据收集方式。并且可以使用最合理的工具或格式向团队提供见解,从而改善协作。

避免供应商锁定

OpenTelemetry 让团队可以自由选择他们想要的任何后端,而不必受限于特定供应商,从而确保他们的投资面向未来。它可以适应系统、后端和流程的变化,因此你永远不会被锁定在单一平台、解决方案或合同中,从而允许组织随着技术需求的发展而扩展和适应。这种独立性和灵活性意味着你可以根据对你的底线和客户最有利的原则来制定业务决策,而不是技术的限制。

借助 OpenTelemetry,你可以获得可扩展性以适应增长、跨平台兼容性以及与现有监控和可观察性工具的轻松集成。

OpenTelemetry 与 Elastic

OpenTelemetry 提供了一种使用统一遥测格式对应用程序进行检测的标准方法,但它不提供后端或分析组件。Elastic Observability 将 OpenTelemetry 数据无缝集成到开放且可扩展的 Elasticsearch 平台中。

Elastic 原生支持 OpenTelemetry 协议,允许我们提取多种语言的日志、指标和跟踪。这使得大规模利用 Elastic 强大的分析和可视化功能变得更加容易。

2023 年 4 月,Elastic 将其 Elastic Common Schema (ECS) 贡献给 OpenTelemetry,其长期目标是将语义约定与 ECS 融合,形成通用遥测数据模式。Elastic 计划在其数据架构上标准化 OpenTelemetry,并将在未来增加对 OpenTelemetry 项目的投资和合作。

Elastic 也是 OpenTelemetry 项目的强大贡献者。为了帮助管理员监控和排除 CI/CD 平台故障,并帮助开发人员提高 CI/CD 管道的速度和可靠性,Elastic Observability 提供了对 CI/CD 流程的可见性。为了提供管道的监控仪表板、警报和根本原因分析,Elastic 与最流行的 CI/CD 平台(包括 Jenkins、Ansible 和 Maven)的社区合作,使用 OpenTelemetry 来检测工具。

Elastic Observability 是一种企业级解决方案,使组织能够将 OpenTelemetry 检测收集的数据直接发送到 Elastic 部署。它让你可以完全了解你的混合云应用程序,并能够存储、分析和可视化所有内容。你还可以使用 Elastic 强大的机器学习功能来减少分析和恢复时间。

探索 OpenTelemetry 解决方案

OpenTelemetry 资源

  • 开始使用 Elastic 的 OpenTelemetry 收集器
  • 在 Elastic 上使用 OpenTelemetry 实现独立性
  • OpenTelemetry 和 Elastic Stack

OpenTelemetry 常见问题解答

OpenTelemetry 是标准吗?

是的。OpenTelemetry 是一个开源项目,也是日志、跟踪和指标的统一标准。

遥测的例子有哪些?

遥测数据的例子包括系统监控和可观察性中使用的日志、指标和跟踪。

OpenTelemetry 和 Jaeger 有什么区别?

OpenTelemetry 可帮助你处理数据并将其导出到各种开源和商业后端,但它不是像 Jaeger 这样的可观察性后端。虽然 OpenTelemetry 提供了一组 API、SDK 和工具来帮助生成和管理遥测数据,但 Jaeger 是一个开源分布式跟踪工具。IT 团队使用 Jaeger 来监控和排除基于微服务架构的应用程序故障。Jaeger 不支持日志和指标。

OpenTelemetry API 和 SDK 有什么区别?

OpenTelemetry API 或应用程序编程接口可协调整个系统的遥测数据收集并检测你的代码。由于 API 是特定于语言的,因此它们必须与你的代码语言相匹配。OpenTelemetry SDK 或软件开发工具包通过库来实现和支持 API,这些库有助于数据收集、处理和导出到可观察性后端。

相关 OpenTelemetry 术语词汇表

  • APIApplication Programming Interface - 应用程序编程接口):定义用于生成和关联遥测数据的数据类型和操作。API 包由用于检测的跨领域公共接口组成。
  • SDKSoftware Development Kit - 软件开发工具包):OpenTelemetry 项目提供的 API 的实现。在应用程序中,SDK 由应用程序所有者安装和管理。
  • 分布式跟踪(Distributed tracing):分布式跟踪允许你跟踪完整的执行路径并识别导致问题的代码。

  • Jaeger:Jaeger 是一个开源分布式跟踪工具,IT 团队使用它来监控和排除基于微服务架构的应用程序故障。
  • 可观察性(Observability):可观察性提供了对在复杂环境中运行的应用程序行为的详细洞察和背景信息,使团队能够使用遥测数据了解其应用程序、服务和基础设施的运行情况,并实时和历史地跟踪和响应问题。
  • 跟踪(Traces):跟踪表示请求通过分布式系统的路径。OpenTelemetry 中的跟踪由其跨度定义。跟踪可帮助团队了解请求通过各种服务和组件的端到端旅程和行为。
  • 指标(Metrics):指标是在时间间隔内测量的数值。它们包括时间戳、事件名称和事件值等属性。日志:日志是系统中在特定时间点发生的离散事件的文本记录。每次执行代码块时都会生成日志条目,通常包含时间戳。

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

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

相关文章

ESP32 gptimer通用定时器初始化报错:assert failed: timer_ll_set_clock_prescale

背景:IDF版本V5.1.2 ,配置ESP32 通用定时器,实现100HZ,占空比50% 的PWM波形。 根据乐鑫官方的IDF指导文档设置内部计数器的分辨率,计数器每滴答一次相当于 1 / resolution_hz 秒。 (ESP-IDF编程指导文档&a…

【NOIP普及组】统计单词数

【NOIP普及组】统计单词数 💐The Begin💐点点关注,收藏不迷路💐 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。 现在&#x…

Unity 如何优雅的限定文本长度, 包含对特殊字符,汉字,数字的处理。实际的案例包括 用户昵称

常规限定文本长度 ( 通过 UntiyEngine.UI.Inputfiled 附带的长度限定 ) 痛点1 无法对中文,数字,英文进行识别,同样数量的汉字和同样数量的英文像素长度是不一样的,当我们限定固定长度后,在界面上的排版不够美观 痛点2…

jmeter常用配置元件介绍总结之函数助手

系列文章目录 1.windows、linux安装jmeter及设置中文显示 2.jmeter常用配置元件介绍总结之安装插件 3.jmeter常用配置元件介绍总结之取样器 jmeter常用配置元件介绍总结之函数助手 1.进入函数助手对话框2.常用函数的使用介绍2.1.RandomFromMultipleVars函数2.2.Random函数2.3.R…

发现了NitroShare的一个bug

NitroShare 是一个跨平台的局域网开源网络文件传输应用程序,它利用广播发现机制在本地网络中找到其他安装了 NitroShare 的设备,从而实现这些设备之间的文件和文件夹发送。 NitroShare 支持 Windows、macOS 和 Linux 操作系统。 NitroShare允许我们为…

【 ElementUI 组件Steps 步骤条使用新手详细教程】

本文介绍如何使用 ElementUI 组件库中的步骤条组件完成分步表单设计。 效果图: 基础用法​ 简单的步骤条。 设置 active 属性,接受一个 Number,表明步骤的 index,从 0 开始。 需要定宽的步骤条时,设置 space 属性即…

互联网技术净土?原生鸿蒙开启全新技术征程

鸿蒙生态与开发者的崭新机会 HarmonyOS NEXT承载着华为对未来操作系统的深刻理解,如今已发展为坚实的数字底座。它不仅在技术层面取得了全面突破,还在中国操作系统市场中站稳了脚跟。 当前,HarmonyOS NEXT的代码行数已超过1.1亿&#xff0c…

从书本到代码:人工智能如何改变教育游戏规则?

内容概要 随着时代的发展,人工智能在教育领域展现出前所未有的潜力,成为推动教育改革的重要力量。它不仅仅是一种技术工具,更是一种变革的催化剂,促使传统教育模式必须进行自我反思和更新。通过利用智能算法,教育者可…

Kubernetes-编排工具篇-01-Kustomize与Helm对比

Kustomize与Helm对比 0、前言 K8s 是一个开源容器编排平台,可自动执行容器化应用程序的部署、扩展和管理。近年来,K8s 已成为采用云原生架构和容器化技术的组织的标准。 但是由于K8s的复杂性,所以很多公司以及开源组织都在开发相关的工具来…

【AIGC】如何通过ChatGPT轻松制作个性化GPTs应用

创建个性化的GPTs应用是一个涉及技术、设计和用户体验的过程。以下是详细步骤: ###1.确定应用目标和用户群体 在开始之前,你需要明确你的应用的目标和目标用户。这将帮助你在设计、开发和个性化方面做出相应的决策。例如,如果你的应用是为了…

141/142题环形链表

本题返回环入口的位置。使用快慢指针,快指针每次移动两个,慢指针每次移动一个。设前一段距离是a,进入环内到slow和fast相遇的地点距离是b,环内剩下的距离是c,如图所示。 环的长度是bc 慢指针移动距离是ab 快指针移动距离是abk(bc…

快速入门Zookeeper

Zookeeper ZooKeeper作为一个强大的开源分布式协调服务,扮演着分布式系统中至关重要的角色。它提供了一个中心化的服务,用于维护配置信息、命名、提供分布式同步以及提供组服务等。通过其高性能和可靠的特性,ZooKeeper能够确保在复杂的分布式…

SpringBoot环境下的共享汽车管理策略

3系统分析 3.1可行性分析 通过对本共享汽车管理系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本共享汽车管理系统采用SSM框架,JAVA作为开发语…

确定图像的熵和各向异性 Halcon entropy_gray 解析

1、图像的熵 1.1 介绍 图像熵(image entropy)是图像“繁忙”程度的估计值,它表示为图像灰度级集合的比特平均数,单位比特/像素,也描述了图像信源的平均信息量。熵指的是体系的混乱程度,对于图像而言&#…

什么是多因素身份验证(MFA)的安全性?

多因素身份验证(MFA)简介 什么是MFA 多因素身份验证(MFA)是一种安全过程,要求用户在授予对系统、应用程序或账户的访问权限之前提供两种或多种形式的验证。仅使用单个因素(通常是用户名和密码)保护资源会使它们容易受到泄露,添加…

特色3D打印机stm32迷你8轴双核心主板

我自己设计的3D打印机主板 1. 这是一块迷你的8轴主板, 主板尺寸为100mm*75mm, 使用一个8cm静音风扇散热足够了2. 这是一个带有保护的板子, 驱动上的gpio具有过压保护功能, 能够直接抗住24V的冲击, 意味着一个驱动炸了, 板子不烧, 并且其他的驱动也没事, 主板支持自动关机3. 8…

【LeetCode:3242. 设计相邻元素求和服务 + 模拟 + 哈希表】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

GIF图片格式详解(二)

gif历史请参考上一篇《GIF图片格式详解(一)》,或直接访问博客地址:https://blog.whatsroot.xyz/2023/12/16/all-about-gif/ 文件格式概述 GIF格式采用调色板模式,即有一个颜色表,每种颜色可以使用RGB24格…

TypeScript 基础语法及使用

文章目录 1、概述2、快速使用3、常用类型4、基础类型5、联合类型6、函数类型7、对象类型 & 接口interface 1、概述 TypeScript(简称 TS)是JavaScript的超集(继承了JS全部语法)是微软开发的开源编程语言,可以在任何…

深入了解决策树:机器学习中的经典算法

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…