什么是 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 术语词汇表
- API(Application Programming Interface - 应用程序编程接口):定义用于生成和关联遥测数据的数据类型和操作。API 包由用于检测的跨领域公共接口组成。
- SDK(Software Development Kit - 软件开发工具包):OpenTelemetry 项目提供的 API 的实现。在应用程序中,SDK 由应用程序所有者安装和管理。
- 分布式跟踪(Distributed tracing):分布式跟踪允许你跟踪完整的执行路径并识别导致问题的代码。
- Jaeger:Jaeger 是一个开源分布式跟踪工具,IT 团队使用它来监控和排除基于微服务架构的应用程序故障。
- 可观察性(Observability):可观察性提供了对在复杂环境中运行的应用程序行为的详细洞察和背景信息,使团队能够使用遥测数据了解其应用程序、服务和基础设施的运行情况,并实时和历史地跟踪和响应问题。
- 跟踪(Traces):跟踪表示请求通过分布式系统的路径。OpenTelemetry 中的跟踪由其跨度定义。跟踪可帮助团队了解请求通过各种服务和组件的端到端旅程和行为。
- 指标(Metrics):指标是在时间间隔内测量的数值。它们包括时间戳、事件名称和事件值等属性。日志:日志是系统中在特定时间点发生的离散事件的文本记录。每次执行代码块时都会生成日志条目,通常包含时间戳。
相关文章:

什么是 OpenTelemetry?
OpenTelemetry 定义 OpenTelemetry (OTel) 是一个开源可观测性框架,允许开发团队以单一、统一的格式生成、处理和传输遥测数据(telemetry data)。它由云原生计算基金会 (CNCF) 开发,旨在提供标准化协议和工具,用于收集…...

[vulnhub]DC:7
https://www.vulnhub.com/entry/dc-7,356/ 端口扫描主机发现 探测存活主机,178是靶机 nmap -sP 192.168.75.0/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-03 13:30 CST Nmap scan report for 192.168.75.1 Host is up (0.00037s l…...

个性化十足的贵族服务器,惠普ML310e Gen8,服务器中的 “潘多拉魔盒”
个性化十足的贵族服务器,惠普ML310e Gen8,服务器中的 “潘多拉魔盒” 小伙伴们大家好呀,这里是勤奋的凯尔森同学,今天给大家分享一款好玩的服务器,惠普ML310e Gen8 V2,相比大家都很熟悉HP ProLiant MicroS…...

百度社招内推
百度社招内推 「百度内推」快来投递你心仪的职位吧( 网申链接地址:https://dwz.cn/ah4OUcca),填入内推码,完成投递,get内推绿色通道~我的内推码:IZ9PVH 内推有什么好处: 简历直达…...

本地部署开源在线即时通讯软件Fiora打造个人私密聊天室
文章目录 前言1.关于Fiora2.安装Docker3.本地部署Fiora4.使用Fiora5.cpolar内网穿透工具安装6.创建远程连接公网地址7.固定Uptime Kuma公网地址 前言 相信大家在聊天时候总是很没安全感,比如在和小姐妹背着男朋友聊一些不能说的坏话,或者背着女朋友和兄…...

TS(类 接口 泛型)
文章目录 类复习相关知识属性修饰符public 修饰符属性的简写形式 protected修饰符private修饰符readonly修饰符 抽象类 接口(interface)定义类结构定义对象结构定义函数结构接口之间的继承接口自动合并 (可重复定义)一些相似的概念…...

docker 启动 neo4j
docker 启动 neo4j 1. 启动2. 导入数据 1. 启动 运行下面命令启动 neo4j, docker run \-d \--restartalways \--publish7474:7474 --publish7687:7687 \--volume$HOME/neo4j-4.4.38/data:/data \--name neo4j-apoc-4.4.38 \-e NEO4J_dbms_allow__upgradetrue \-e …...

OPENAI官方prompt文档解析
官方文档地址:https://platform.openai.com/docs/guides/gpt-best-practices 文档中文版来源:OpenAI 官方提示工程指南 [译] | 宝玉的分享 (baoyu.io) 1.写清楚说明 如果prompt给的范围十分模糊或是过于宽泛,那么GPT就会开始猜测您想要的内容,从而导致生成的结果偏离预期. …...

【GESP】C++一级练习BCQM3092,双面打印
GESP一级知识点if分支语句和取余、整除操作练习。比较简单。 题目题解详见:https://www.coderli.com/gesp-1-bcqm3092/ 【GESP】C一级练习BCQM3092,双面打印 | OneCoderGESP一级知识点if分支语句和取余、整除操作练习。比较简单。https://www.coderli.…...

mysql--多表查询
一、联合查询 作用:合并结果集就是把两个select语句的查询结果合并到一起! 合并结果集有两种方式: UNION:合并并去除重复记录,例如:SELECT * FROM t1 UNION SELECT * FROM t2; UNION ALL&a…...

RHCE-Web-nginx http实验和nginx https实验
一、web服务器简介 (1)什么是www www 是 world wide web 的缩写,也就是全球信息广播的意思。通常说的上网就是使用 www 来查询用户 所需要的信息。 www 可以结合文字、图形、影像以及声音等多媒体,并通过可以让鼠标单击超链接的…...

少儿编程学习现状洞察:青少年编程教育需求与学习频率分析
随着少儿编程教育的逐渐普及,越来越多的家庭开始关注孩子在编程学习中的表现。根据最新数据,90%的少儿编程学员保持每周至少一节课的学习频率,而95%的编程课程都安排在周末。特别是在8岁、10岁、12岁及15岁以上的年龄层次,孩子的学…...

接口集成、快速对接-阿里身份证实名认证接口
身份证实名认证接口现已被应用在联网的各种业务场景中,如电商、在线教育、银行等等,下面以电商平台为例,列举翔云身份证实名认证接口在电商平台中的具体应用和优势。 电商平台的出现方便了人们的生活,进行电商的实名认证有助于提高…...

HTTP、WebSocket、gRPC 或 WebRTC:各种协议的区别
在为您的应用程序选择通信协议时,有很多不同的选择。 本文将了解四种流行的解决方案:HTTP、WebSocket、gRPC 和 WebRTC。 我们将通过深入学习其背后原理、最佳用途及其优缺点来探索每个协议。 通信方式在不断改进:变得更快、更方便、更可靠&…...

Unity3D学习FPS游戏(8)装弹和弹夹UI显示
前言:实现了武器的基本发射功能,但是我们弹夹数量是有限,之前并没有做装弹和弹夹显示的功能。本篇实现装弹和弹夹显示。 装弹和弹夹UI显示 装弹目标思路和实现 弹夹UI显示目标弹夹UI的思路和实现UI代码的思路和实现 武器控制的完整代码效果补…...

Android 托管 Github Action 发布 Github Packages ,实现 Mvn 免费自动化托管
自从多年前 JCenter 关闭服务之后,GSY 项目版本就一直发布在 Jitpack 上,如今每个月也都有大概 10w 左右下载,但是近年来时不时就会出现历史版本丢失的问题,而且有时候还不是某个具体版本丢失,而是版本里的某几个依赖突…...

火山引擎VeDI数据服务平台:在电商场景中,如何解决API编排问题?
01 平台介绍 数据服务平台可以在保证服务高可靠性和高安全性的同时,为各业务线搭建数据服务统一出口,促进数据共享,为数据和应用之间建立了一座“沟通桥梁”。 同时,解决数据理解困难、异构、重复建设、审计运维困难等问题&#x…...

【每日C/C++问题】
一、 结构体和联合体有什么区别?能否在声明过程当中缺省名字?(需要写清楚使用方法) 结构体的各个成员占用不同的内存空间,总大小是所有成员大小之和(结构体字节对齐): typedef str…...

layaair做帧动画,等待一秒之后移动坐标,坐标位置明明相同,执行的时候却会抖动。
如下图:我将1秒后面的位置与0秒的坐标位置设置为一样,然后再第二秒的时候再设置位置移动。也就是想实现这个效果,小狗先停在这里一秒,然后再开始行走。现在的问题是停在这里依然抖动一下,也就是根本就停不住。还是会变…...

SAP分包业务中能否应用后继物料?
近期物流用户在工作中遇到新的问题。在分包业务中的原材料后继(物料主数据设定非连续标识及后继物料)不成功问题。对于未知应用,需要先研究期可行性,与问题或故障不同,如果系统本身就不支持,再多分析测试也…...

【数据结构】二叉树——判断是否为完全二叉树
一、思路 有完全二叉树的解释 我们想要判断二叉树是否为完全二叉树 我们可以用队列来实现 我们先将根节点入队列 再将根节点出队列,判断取出节点是否为空、 若不为空将该节点的左右节点入队列 左右节点为空也入队列 若为空则停止入队列 然后判断队列中是否有 NUL…...

FFmpeg 4.3 音视频-多路H265监控录放C++开发十. 多线程控制帧率。循环播放,QT connect 细节,
在前面,我们总结一下前面的代码。 在 FactoryModeForAVFrameShowSDL 构造函数中 init SDL。 通过 QT timerevent机制,通过startTimer(10);每隔10ms,就会调用timerEvent事件。 在timerEvent事件中,真正的去 读取数据,…...

近百万奖金!2024 Web3.0 创新大赛重磅来袭!
10月30日,中国互联网协会与香港Web3.0协会共同组织举办的2024 Web3.0 创新大赛在上海举行启动会,宣布大赛正式在DataFountain竞赛平台(简称DF平台,http://www.datafountain.cn)启动上线。 大赛面向社会各界征集参赛团队…...

gRPC 一种现代、开源、高性能的远程过程调用 (RPC) 可以在任何地方运行的框架
背景介绍 gRPC 是一种现代开源高性能远程过程调用 (RPC) 可以在任何环境中运行的框架。它可以有效地连接服务 在数据中心内和数据中心之间,具有对负载平衡、跟踪、 运行状况检查和身份验证。它也适用于最后一英里 分布式计算,用于…...

cmake系列-怎么构建不同的C++程序目标文件(可执行程序、动态库、静态库)
目录 生成可执行程序生成动态库生成静态库 我们编写的C代码不仅仅只是为了生成可执行程序,有的时候可能是为了生成动态库或者静态库,那么如果用cmake来构建的话,应该怎么做呢,怎么指定是生成可执行程序,还是生成动态库…...

使用ffmpeg和mediamtx模拟多通道rtsp相机
首先下载ffmpeg,在windows系统上直接下载可执行文件,并配置环境变量即可在命令行当中调用执行。 下载地址: https://ffmpeg.org/再在github上下载mediamtx搭建rtsp服务器,使用ffmpeg将码流推流到rtsp服务器。 下载地址࿱…...

windows系统类似于linux的nohup命令后台启动jar服务
一、首先新建一个后缀名为.bat文件 二、将jar包放在与jar包同一个路径下 三、编写.bat文件 echo off start javaw -Xms512m -Xmx1024m -XX:PermSize256m -XX:MaxPermSize512m -XX:MaxNewSize512m -jar xxxxx-22900.jar >> StartupLog.log 2>&1 & exit 四…...

2024 Rust现代实用教程 流程控制与函数
文章目录 一、if流程控制与match模式匹配1.流程控制2. IF流程控制3.match 表达式 二、循环与break continue以及与迭代的区别1.Rust中的循环Loops2.break && continue3.迭代4.循环与迭代的不同 三、函数基础与Copy值参数传递1.函数的基础知识2.Copy by value 四、函数值…...

stm32入门教程--USART外设 超详细!!!
目录 简介 什么是UART? 什么是USART? 简介 USART(Universal Synchron /Asynchronous Receiver /Transmitter)通用同步/异步收发器 1、USART是STM32内部集成的硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧…...

再探“构造函数”(2)友元and内部类
文章目录 一. 友元‘全局函数’作友元‘成员函数’作友元‘类‘作友元 内部类 一. 友元 何时会用到友元呢? 当想让(类外面的某个函数/其它的类)访问 某个类里面的(私有或保护的)内容时,可以选择使用友元。 友元提供了一种突破&a…...