乐趣区

关于nginx:OpenTelemetry-正在改变我们跟踪和设计应用的方式

原文作者:Dave McAllister of F5

原文链接:OpenTelemetry 正在扭转咱们跟踪和设计利用的形式

转载起源:NGINX 官方网站


NGINX 惟一中文官网社区,尽在 nginx.org.cn

可观测性是运行云原生利用的要害,而云原生利用的性能依赖于在多个地位运行的大量微服务之间的交互。微服务利用的涣散耦合性可能意味着每个微服务都在以本人的形式报告本人的流动状况。全程跟踪申请的处理过程对于故障排除至关重要,然而如果没有一款适合的工具来编译和关联这些遥测数据,跟踪会变得十分之艰难——即使没有到不可能的境地。

通过多番考量,NGINX 古代利用参考架构 (MARA) 我的项目团队从一泛滥性能可观测性工具中选中了 OpenTelemetry。咱们的 OSS 团队抉择 MARA 这个新兴我的项目也激发了咱们的钻研趣味。在 GlueCon 2022 大会上,我与 F5 CTO 办公室的架构师 Granville Schmidt 一起探讨了 OpenTelemetry 的现状以及将来值得期待的一些亮点。请观看下方咱们的对话视频,深刻理解为何 OpenTelemetry 是云原生应用领域的重要资产。

OpenTelemetry 赋能 Observability 2.0

自 2019 年在巴塞罗那 KubeCon 大会上首次亮相以来,OpenTelemetry 曾经吸引了少量热心的贡献者。从奉献数量来看,它是云原生计算基金会 (CNCF) 的第二大热门我的项目,其贡献率在近六个月来达到了历史最高。这么多的贡献者表明,OpenTelemetry 曾经成熟,开始从晚期的采纳者(违心尝鲜)向实用主义者(想要成熟的产品)遍及。

OpenTelemetry 的外围是数据 —— 具体来说是更好地了解、排障和改善利用所需的数据和数据流(遥测)。数据只有能在大规模聚合、剖析和可视化的状况下才有用。尽管 OpenTelemetry 并没有提供数据可视化的方向,但它让咱们不再担心能够取得哪些数据,而是能够专一于应用数据发明的价值。

OpenTelemetry 可能实现这些数据源之间的天然关联,而不是冀望咱们本人尝试这种关联。OpenTelemetry 这种跨利用关联事件的能力催生了 Observability 2.0(可观测性 2.0)—— 一种掂量云端利用流动的新基准。关联好的数据加强了咱们对利用的理解。以前咱们只晓得利用是否正在运行,而当初有哪些申请流经咱们的利用、它们的门路是什么 —— 咱们都一清二楚。

在 OpenTelemetry 之前有两个驰名的开源我的项目:OpenTracing (OT)OpenCensus (OC),两者都着力于解决数据跟踪格局的标准化问题,目标是让咱们可能轻松获取必要的信息并理解这些信息对古代利用的影响。尽管它们有着相似之处,但也难免会抢夺资源,公司往往只能从中筛选一个。2019 年 3 月,为了对立跟踪数据的生成形式和格局,OpenTracing 和 OpenCensus 发表合并,OpenTelemetry 就此诞生。OpenTelemetry 我的项目进一步定义了通过与 Traces(链路跟踪)雷同的遥测信道获取其余类别的可观测性数据(Metrics 指标和 Logs 日志)的规范,从而实现更高水平的集成和清晰度。

接下来咱们来理解一下 OpenTelemetry 的两个令人惊喜的性能:分布式跟踪和利用智能。

为什么古代利用架构须要分布式跟踪

尽管分布式跟踪曾经存在多年,但近十年来的许多变动都减少了对它的需要。咱们能够应用 Cynefin 框架找出古代利用架构的变动及面临的挑战。

Cynefin 框架形容了如何在从简略到简单的过程中扭转咱们的实际。其中的问题在于,咱们的演进有两条不同的路线,每条路线都有本人的特点,而试图从简略到简单间接走捷径往往会造成凌乱和不残缺的停顿。

咱们来看看哪些元素决定了古代利用和云原生之旅的路线。在第一条路线(Cynefin 图中的 Y 轴)中,咱们领有通常采纳微服务架构的古代利用,其中每个利用都执行着特定的工作。在第二条路线(X 轴)中,咱们的简单环境是短暂的,因为微服务实例会依据需要一直增减,并挪动到不同的主机以解决不同的网络问题。

咱们还必须思考亚马逊云科技 (AWS)、Microsoft Azure 和谷歌云平台 (GCP) 等云环境的呈现和大规模增长。此类云平台的一大劣势是弹性响应 —— 它们可能通过扩大或缩减资源来匹配以后的需要程度。加之受容器编排(最罕用的工具是 Kubernetes)的影响,资源的数量和地位随着工夫发生变化,凌乱开始呈现。(即便是这种绝对受限的视图也是凌乱的,无服务器函数等元素更是会让它雪上加霜。)

在古代架构中,许多扩散的组件产生了咱们监控和保护利用所需的遥测数据,数据负载无疑是宏大且简单的。因为咱们无奈全面管制基础架构和通信门路,因而很难牢靠地重现问题或者轻松触发问题。咱们须要借助肯定的技术来跟踪所有流动和相干元素,以便理解和剖析一直变动的环境。

这就是 OpenTelemetry 诞生的意义。

应用 OpenTelemetry 实现分布式跟踪的将来

分布式跟踪引发了一场行业大地震,其中尤为显著的是申请通过 Metrics(指标)生成外部性能视图的形式。通过分布式跟踪,咱们能够跟踪许多类型的新指标,但最常见的是与单位工夫内的申请数、单位工夫内的谬误数、聚合申请占用的工夫长度(同一时间单位)相干的指标。

Metrics 并非是陈腐事物 —— 它们易于治理、存储和汇总,因而非常适合数学分析。在 OpenTelemetry 中,所有生成 Metrics 的利用都能够通过遥测(传输)层将它们发送到一个公共收集点,从而帮忙标准那些涣散耦合的服务生成的数据,包含让它们与底层基础架构的数据保持一致。简而言之,OpenTelemetry 能够让 Metrics 的获取和发送变得更简略。

OpenTelemetry 还能够帮忙解决工夫戳漂移和偏斜问题 —— 这类问题会减少事件关联的难度。OpenTelemetry 为每个申请调配一个 TraceId,但数据依然会受漂移和偏斜的影响,这是云原生架构下经常出现的问题。漂移和偏斜的起因可能在于报告门路具备不同的持续时间,或者不同主机的时钟之间不足严密同步。通过在流量解决期间跟踪组件之间的通信,分布式跟踪容许 OpenTelemetry 无需深度检测相干利用即可掂量各个 span—— span 是 trace 的工作单元和构建块。

联合应用这三个信号(遥测类别),咱们可能纠正问题并将利用复原到生产级品质:

  • Metrics—— 是否呈现了问题?
  • Traces—— 问题出在哪里?
  • Logs—— 问题是什么?

说到这儿,咱们就又不得不提 Observability 2.0 了。获取 Traces 并立刻查看哪些 Metrics 对应哪个 trace 是一项很弱小的能力。举例来说,当 Metrics 表明存在问题时,分布式跟踪可让您始终追溯到引发初始问题的特定申请,并跟踪申请执行到了哪个步骤。因为 trace 是由 spans 组成的(依照 spans 产生的程序),咱们能够跟踪申请经验的每个步骤。通过理解整个事件的前因后果,包含导火索、问题隐患以及最终结果等等,咱们能够在利用中精准发力,重点冲破。

这可能听起来很简略,但 OpenTelemetry 的分布式跟踪性能能够充当申请胜利和执行工夫的代理,帮忙咱们深刻理解用户体验。作为一名用户,我关怀的是我的申请;作为一名站点可靠性工程师 (SRE),我关怀的是“聚合”的申请。

OpenTelemetry 能够兼顾两者,并且为了让所有利用的所有必要数据都变得可用,它还赋予了咱们从整体到细节、从宏观到宏观的剖析能力。

利用人工智能和机器学习实现利用智能

OpenTelemetry 的这一新数据流还能够使咱们在开发和经营响应中实现自适应和自动化。有了所有这些累积的数据,咱们能够让咱们的利用变得更智能。F5 目前专一于帮忙客户开发和部署咱们所说的“感知可控、随需而变的利用”。顾名思义,“感知可控、随需而变”是指利用可能主动和智能地调整其行为,以响应环境中的变动。

这也就不难理解为什么您会在许多解决方案中看到越来越多的人工智能 (AI) 和机器学习 (ML) 元素了。除了是大势所趋之外,这也跟人工智能和机器学习自身就很给力无关,因为当初有足够的数据撑持咱们得出对于因果关系的精确论断并设计适合的应答计划。

通过使遥测数据变得易于拜访和标准化,OpenTelemetry 能够让“感知可控、随需而变的利用”旅程变得更加容易。随着不同类型的产品开始输入相似的 Metrics,咱们能够利用 OpenTelemetry 中已建设的语义约定,更轻松地在申请解决期间关联它们的操作,并将这些信息提供给 ML 和 AI 算法,让利用和基础架构实现动静适应。

当您理解这所有背地的数据迷信并确保您的遥测数据与您的 AI 和 ML 相干时,“感知可控、随需而变的利用”的数据驱动性质就能够继续进化、大显神通了。

结语

遥测数据编码对于 OpenTelemetry 用户和应用它作为遥测信道的利用来说都是一个制胜法宝。这种形式能够收集多个起源的数据,并将它们转发到任何兼容的聚合和剖析工具。此外,OpenTelemetry Collector 解决了厂商本人施行收集器的麻烦,让他们能够专一于加强代码以执行有意义的剖析并采取智能口头,并且构建新工具来帮忙了解这个简单而凌乱的新世界。事实上,以开源翻新为后盾的 OpenTelemetry Collector 蕴藏着微小的潜能,简直可能解决以后的所有格局,同时对接将来的新技术。

OpenTelemetry 重点关注咱们理解利用所需的次要数据类别,使咱们的利用可能对简单的古代利用世界的性能和问题提供更深刻的洞察。通过关联咱们的数据并对立语义和规范约定,OpenTelemetry 让咱们离古代利用的将来更近了一步。随着我的项目的一直成熟和采用率的继续减少,OpenTelemetry 无疑是咱们深刻了解和利用 AI 和 ML 技术、让简单的问题简单化的有效途径。

如欲进一步理解 NGINX OSS 工程师是如何利用 OpenTelemetry 的,请试用古代利用参考架构(MARA)和示例利用 (Bank of Sirius)。


NGINX 惟一中文官网社区,尽在 nginx.org.cn

更多 NGINX 相干的技术干货、互动问答、系列课程、流动资源:

开源社区官网:https://www.nginx.org.cn/
微信公众号:https://mp.weixin.qq.com/s/XVE5yvDbmJtpV2alsIFwJg

退出移动版