OpenTelemetry-1.介绍

目录

1.是什么

2.为什么使用 OpenTelemetry

3.数据类型

Tracing

Metrics

Logging

Baggage

4.架构图

5.核心概念

6.相关开源项目

​编辑

7.分布式追踪的起源

8.百花齐放的分布式追踪

Zipkin

Skywalking

Pinpoint

Jaeger

OpenCensus

OpenTracing

9.Opentelemetry的诞生

10.Opentelemetry的目标


1.是什么

  • 开源的
  • 受到可观测领域行业领导者的采用和支持
  • 是一个 CNCF 孵化项目, 由 OpenTracing 和 OpenCensus 项目合并而成。
  • 与供应商无关的

OpenTelemetry 包括可观测性的三个支柱:追踪、指标和日志。(本文将重点关注追踪)

  • 分布式追踪是一种跟踪服务请求在分布式系统中从开始到结束的方法。
  • 指标是对一段时间内活动的测量,以便了解系统或应用程序的性能。
  • 日志是系统或应用程序在特定时间点发生的事件的文本记录。

  • OTLP 协议: OTLP 是 OpenTelemetry 中比较核心的存在, 在遥测数据及 Collector 之间制定了包括编码 (encoding)、传输 (transport)、传递 (delivery) 等协议。
  • Instrumentation: 采集器

以 Dapper 的定义作为基准, 一个标准的分布式 Trace 示例如下图所示。一个 Trace 是由 Span 构成的有向无环图 (DAG), Span 是一个最小粒度的调用, 既可以指代一个程序块执行, 也可以指代一次 HTTP 等应用协议的远程调用。 

2.为什么使用 OpenTelemetry

在云原生技术堆栈中, 分布式和多语言架构是常态。随着云计算、微服务架构和日益复杂的业务需求的兴起,越来越需要对软件和基础设施可观测性的需求。特别是在微服务架构中,每个请求最终可能会经过数个甚至数十个微服务)并在其间进行多次网络调用。在这种复杂的系统中,仅靠传统的日志和指标监控数据很难实现一览全局的视角,排除故障会非常困难。

3.数据类型

Opentelemetry 采集的信息包括可观测的三支柱 Tracing、Metrics、Logging, 其次还包括 Baggage。Baggage 类似与 OpenTrace 中 Baggage, Opentelemetry 将它从 trace 中独立了出来。目前状态: Traces 和 Baggage 已进入稳定状态, Metrics 也大部分完成, 而下一将在 Logs 上逐步发力。值得一提的是 Metrics 中的 Exemplars 的情况, 目前在 Java SDK 中已经实现, 而在 Go SDK 中还未支持。

Tracing

OpenTelemetry 追踪系统是基于 OpenTracing 和 OpenCensus。这两个系统, 以及流行的 Zipkin 和 Jaeger 项目, 都是基于谷歌开发的 Dapper 追踪系统。OpenTelemetry 可以将这些项目兼容到一个系统中。

Metrics

度量指标 (metric) 是一个很大的话题, 包含各种各样的方法和实现。OpenTelemetry 度量信号可以与 Prometheus 和 StatsD 完全兼容。

Logging

OpenTelemetry 结合了高度结构化的日志 API 和高速日志处理系统。现有的日志 API 可以连接到 OpenTelemetry, 避免了对应用程序的重新测量。 目前这部分尚发展阶段

Baggage

OpenTelemetry Baggage 是一个简单但通用的键值系统。一旦数据被添加为 Baggage, 它就可以被所有下游服务访问。这允许有用的信息, 如账户和项目 ID, 在事务的后期变得可用, 而不需要从数据库中重新获取它们。例如, 一个使用项目 ID 作为索引的前端服务可以将其作为 Baggage 添加, 允许后端服务也通过项目 ID 对其跨度和指标进行索引。这信息添加到了 http header 中, 进行上下文传递, 因此每增加一个项目都必须被编码为一个头, 每增加一个项目都会增加事务中每一个后续网络请求的大小, 因此不建议在将大量的非重要的信息添加到 Baggage 中。

4.架构图

  • receivers(接收者): 定义从 client 端的数据要以何种数据模型进行接收, 支持很多种数据模型。
  • processors: 将 receivers 的数据进行某些处理, 比如批量、性能分析等。
  • exporters: 将 processors 后的数据导出到特定的后端, 比如 metrics 数据存储到 prometheus 中。

5.核心概念

  1. 信号
    • 信号是用于描述操作系统和平台上运行的应用程序基本活动的系统输出。信号可以是你想在特定时间点测量的东西,如温度或内存使用率,也可以是你想追踪的分布式系统组件中发生的事件。你可以将不同的信号组合在一起,从不同角度观察同一项技术的内部运作。
  2. 遥测数据(Telemetry Data)

    • 指标(Metrics):度量数据,用于量化系统的状态和性能,如CPU利用率、请求速率、队列长度等。指标可以是瞬时值(Gauge)、累积计数(Counter)、直方图(Histogram)、摘要统计(Summary)等不同类型,有助于监控系统的健康状况、资源消耗、服务质量等。

    • 日志(Logs):事件记录,包含文本信息、时间戳、严重级别、元数据等,用于记录系统的运行状态、异常情况、调试信息等。日志有助于诊断问题、理解系统行为和审计目的。

    • 分布式追踪(Distributed Tracing):跟踪跨服务、跨进程甚至跨网络边界的请求流经系统的全过程,包括每个环节的耗时、调用关系、状态等信息。分布式追踪对于分析服务间的依赖关系、排查性能瓶颈、识别故障根源至关重要。

  3. OpenTelemetry API

    • 提供一系列标准化的编程接口,使得开发人员能够在应用程序中方便地插入观测代码,生成上述三种类型的遥测数据。API 设计的目标是语言无关,目前支持多种主流编程语言(如Java、Python、Go、JavaScript等)。
  4. OpenTelemetry SDK

    • 实现了OpenTelemetry API,提供了具体的遥测数据采集、处理和导出功能。SDK 包括:
      • 数据收集(Data Collection):通过API暴露的接口收集应用程序产生的指标、日志和追踪数据。
      • 数据处理(Data Processing):对原始数据进行转换、聚合、过滤等操作,如采样、资源标签关联、Span链接等。
      • 数据导出(Data Export):将处理后的遥测数据发送到后端监控系统、日志聚合平台、分布式追踪系统等,这些系统可能是商业产品(如Prometheus、Jaeger、Zipkin等)或云服务商提供的服务(如阿里云、腾讯云等)。
  5. 资源(Resources)

    • 描述了产生遥测数据的实体(如进程、服务、主机等)的属性,如服务名、版本、环境、地域等。资源信息与每一条遥测数据关联,有助于在后端进行数据的筛选、聚合和分析。
  6. Span(跨度)

    • 在分布式追踪中,Span代表一次操作的执行单元,通常对应一次网络请求、数据库查询、函数调用等。每个Span包含起止时间、操作名称、状态(如成功/失败)、时间戳、属性(Tags)、事件(Events)、关联的Span(Links)等信息。Spans可以形成树状结构(通过ParentSpanId关联),构成完整的调用链路。
  7. Trace(跟踪)

    • 由一个或多个相互关联的Span组成,表示一个完整的服务请求(或工作单元)的生命周期。一个Trace通过唯一的Trace ID标识,包含了请求从发起至完成过程中涉及的所有服务调用及其相关信息。
  8. Semantic Conventions(语义约定)

    • 规定了如何标准化地命名、描述和度量特定类型的操作或事件,以便在不同系统和服务间保持遥测数据的一致性和可理解性。例如,定义了HTTP请求的Span应如何标记URL、方法、状态码等属性,数据库查询的Span应如何记录SQL语句、数据库类型等信息。
  9. 自动 instrumentation(自动检测)

    • OpenTelemetry 提供了自动检测库,能够自动植入到应用程序中,无需手动修改代码即可收集相关组件(如HTTP客户端/服务器、数据库驱动、消息队列客户端等)的遥测数据。
  10. Collector(收集器)

    • 可选组件,用于接收来自多个源(如本地SDK、远程应用程序等)的原始遥测数据,进行集中式的处理(如格式转换、协议适配、数据清洗等)和导出到多个后端系统。Collector有助于简化遥测数据的管理和集成。

6.相关开源项目

7.分布式追踪的起源

自从微服务的兴起开始,整个系统架构开始变得极为庞大和复杂,但是服务之间的调用关系,调用消耗时间等等信息却依然是半黑盒的状态。为了能够将调用的链路进行串联,将系统的各种指标数据展示出来以使得系统的链路更加透明便于排查故障,分布式追踪便应运而生。

分布式追踪的起源有一个比较普遍的说法是源自Google2010年发表的论文Dapper, a Large-Scale Distributed Systems Tracing Infrastructure,然而实际上更早之前就有一些大公司内部已经有了类似的组件在使用了,只是不为人所知。当然即便如此,作为最早的系统性的论述分布式追踪的论文,它有着非同寻常的影响了,可以说是很多分布式追踪的实现参考。

8.百花齐放的分布式追踪

Zipkin

Zipkin最初是由Twitter开发并与2012年开源的一款开源追踪系统。Zipkin的使用非常广泛,影响了很多的后来人。他的传输头为X-B3

Skywalking

Skywalking是由国人开发,并且在后续捐赠给了Apache基金会的一个开源项目。现在是Apache基金会的顶级项目。

Pinpoint

Pinpoint由Naver在2012年开发,并于2015年开源。Pinpoint适用于java,php和python。

Jaeger

Jaeger最早是由Uber开发并于2017年开源,后续捐赠给了CNCF基金会。

OpenCensus

OpenCensus由Google发起,最初是Google内部追踪平台,后开源。

OpenTracing

OpenTracing由CNCF托管,具备较为完善的instrumentation库。

9.Opentelemetry的诞生

OpenCensus与OpenTracing
在上述的项目中有两个项目较为特殊:其一是OpenTracing,他制定了一套无关平台的统一的Trace的标准,后续的很多项目例如Jaeger等都是基于此协议,因此他在当时的Trace标准领域具有不小影响力;其二是OpenCensus,他背靠Google,并且它不仅仅实现了Trace,还包括了Metrics,并且他包含了一系列诸如Agent和Collector的方案,可以说是相当完备。

在当时这两大流派可以说是互相有一大票的追随者,一边是以Google和微软领衔的OpenCensus,一边是众多开源项目和厂商使用的OpenTracing,两者可以说是各有优劣,各领风骚。直到有一天...

再经过了一段时间的发展后OpenCensus与OpenTracing为了将两者的优点进行整合,宣布将进行合并,两者的合并就是后来赫赫有名的Opentelemetry

Opentelemetry可以说是含着金汤匙出生:OpenTracing支持,OpenCensus支持,刚开始就自带经验丰富的的社区人员,同时背后也有互联网巨头的支持。

10.Opentelemetry的目标

Opentelemetry旨在构建包含Trace,metrics和Logging的分布式追踪方案,它提供了统一的标准。

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

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

相关文章

「杭州*康恩贝」4月26日PolarDB开源数据库沙龙,开启报名!

4月26日(周五),PolarDB开源社区联合康恩贝将共同举办开源数据库技术沙龙! 时间:4月26日13:30 地点:浙江省杭州市滨江区滨康路568号康恩贝中心2楼 活动亮点 浙江英诺珐医药有限公司信息经理 朱常青 分享《…

数据结构-二叉树-堆

一、物理结构和逻辑结构 在内存中的存储结构,逻辑结构为想象出来的存储结构。 二、完全二叉树的顺序存储结构 parent (child - 1)/2 leftchild 2*parent 1; rightchild 2*parent 2 上面的顺序结构只适合存储完全二叉树。如果存储,会浪费很多的空…

清华大学:序列推荐模型稳定性飙升,STDP框架惊艳登场

获取本文论文原文PDF,请公众号留言:论文解读 引言:在线平台推荐系统的挑战与机遇 在线平台已成为我们日常生活中不可或缺的一部分,它们提供了丰富多样的商品和服务。然而,如何为用户推荐感兴趣的项目仍然是一个挑战。…

对接浦发银行支付(八)-- 对账接口

一、背景 本文不是要讲述支付服务的对账模块具体怎么做,仅是介绍如何对接浦发银行的对账接口。 也就是说,本文限读取到对账文件的内容,不会进一步去讲述如何与支付平台进行对账。 如果要获取商户的对账单,需要遵循以下步骤&…

使用自购服务器部署RustDesk - 远程桌面服务

服务器官网:雨云 - 新一代云服务提供商 推荐购买宿迁主机,使用NAT网络不购买独立IP,国内主机独立IP价格很贵,这种方式虽然不能省略端口号,但是可以确保访问速度很快,NAT给的10个端口基本够用; …

探索RadSystems:低代码开发的新选择(二)

系列文章目录 探索RadSystems:低代码开发的新选择(一)🚪 文章目录 系列文章目录前言一、RadSystems Studio是什么?二、用户认证三、系统角色许可四、用户记录管理五、时间戳记录总结 前言 在数字化时代,低…

路由过滤,路由策略小实验

目录 一,实验拓扑: 二,实验要求: 三,实验思路: 四,实验过程: 1,IP配置: 2、R1 和R2 运行 RIPv2,R2,R3 和R4运行 oSPF&#xff0…

8款有效删除Android锁屏的手机解锁软件

为了保护重要数据,许多手机用户倾向于使用图案锁、密码、指纹甚至面部识别来锁定他们的设备。但有时,他们无法解锁手机,因为忘记了复杂的密码、多次重复错误的锁定图案、或者手机被恶意代码攻击等。 8款有效删除Android锁屏的手机解锁软件 那…

光伏无人机勘探技术应用分析

光伏无人机勘探与传统勘探想必,具有智能化作业、测控精度高、环境适应性强等明显优势;卫星勘探辅助其能更快速甚至实时完成测绘拼图;在进行勘察时,可根据需要自由更换机载设备;自动诗经建模使数据更直观,工…

在Rockey操作系统上安装Asterisk和DAHDI的详细步骤,拷贝粘贴就能用

目录 RockyAsterisk验证 Rocky Centos之后,Rocky和Alma Linux接棒前行。今天我们选择Rocky Linux操作系统来介绍,如何安装Asterisk和DAHDI等开源软件。 Asterisk 首先我们下载DAHDI 3.2 和Asterisk,在本文下载连接里有。下载到Rocky操作系…

腾讯云服务器,部署mysql数据库后无法远程访问?

一,首先确定自己部署的数据库,是否可以正常登录,验证部署是否是否成功 mysql -u root -p二、放开mysql远程访问权限,依次输入这些命令 create user root% identified with mysql_native_password by xxxxx; grant all privilege…

AI预测福彩3D第9套算法实战化测试第1弹2024年4月22日第1次测试

经过前面多套算法的测试,总结了一些规律,对模型优化了一些参数,比如第8套算法的测试,7码的命中率由最开始的20%提高到了50%。虽然命中率有了很大的提高,但是由于咱们之前的算法只是为了测试和记录,提供的方…

软考134-上午题-【软件工程】-进度管理

一、甘特图(了解) 1-1、定义 Gantt图是一种简单的水平条形图,它以日历为基准描述项目任务。 水平轴表示日历时间线(如时、天、周、月和年等),每个条形表示一个任务,任务名称垂直地列在左边的列中,图中水…

67条tips实战案例渗透测试大佬的技巧总结

67条tips实战案例渗透测试大佬的技巧总结。 Tips 1. 手动端口探测 nmap的-sV可以探测出服务版本,但有些情况下必须手动探测去验证 使用Wireshark获取响应包未免大材小用,可通过nc简单判断 eg. 对于8001端口,nc连接上去,随便输…

在Qt creator中使用多光标

2024年4月22日,周一下午 Qt Creator 支持多光标模式。 多光标模式允许你在同一时间在多个光标位置进行编辑,从而可以更快地进行一些重复性的编辑操作。 要启用多光标模式,请按住 Alt 键,并用鼠标左键在文本编辑器中选择多个光标…

目标检测——绝缘子数据集

引言 亲爱的读者们,您是否在寻找某个特定的数据集,用于研究或项目实践?欢迎您在评论区留言,或者通过公众号私信告诉我,您想要的数据集的类型主题。小编会竭尽全力为您寻找,并在找到后第一时间与您分享。 …

Spring Boot入门(20):轻松搞定多数据源配置,Spring Boot与Mybatis-Plus的完美结合!

前言 本文将介绍如何在Spring Boot框架下使用mybatis-plus实现多数据源配置。多数据源配置是一个常见的需求,在实际项目中也经常遇到,因此掌握多数据源配置的技巧是非常重要的。 摘要 本文将为大家介绍如何使用Spring Boot和mybatis-plus实现多数据源…

深度学习的炼金术:转化数据为黄金的秘密

深度学习的炼金术:转化数据为黄金的秘密 1 引言 在现代深度学习的壮阔疆域中,数据是王冠上耀眼的宝石,而性能优化则是锻造这顶王冠的炼金术。这份融合了数据和算法魔力的艺术,不仅仅依赖于强大的计算资源和复杂的网络结构&#x…

CSS基础:浮动(float)的3种方式,清除浮动3种方式的详解

你好,我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃-大专生,一枚程序媛,感谢关注。回复 “前端基础题”,可免费获得前端基础 100 题汇总,回复 “前端工具”,可获取 Web 开发工具合…

【三维Dvhop定位】基于麻雀搜索算法的多通信半径和跳距加权的三维Dvhop定位算法【Matlab代码#81】

文章目录 【可更换其他算法,获取资源请见文章第6节:资源获取】1. Dvhop定位算法2. 麻雀搜索算法3. 多通信半径和跳距加权策略3.1 多通信半径策略3.2 跳距加权策略 4. 部分代码展示5. 仿真结果展示6. 资源获取 【可更换其他算法,获取资源请见文…