可观测性入门

本文介绍了可观测性的重要性,探讨了OpenTelemetry在实现应用可观测性中的角色,涵盖了可靠性指标、SLI/SLO概念,以及分布式链路追踪的基础知识,包括Span和日志的作用。通过实例揭示了如何利用这些工具追踪请求在分布式系统中的传播路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在深入研究OpenTelemetry之前,了解一些核心概念非常重要。

什么是可观测性?

可观测性是指可以在不了解系统内部运行机理的情况下,从外部诊断系统运行情况。它使我们能够轻松定位和处理新问题,并帮助我们了解为什么会发生这些问题。

为了实现这个目标,必须正确地检测应用程序,也就是说应用程序代码必须发出调用链(trace)、指标(metric)和日志(log)。应用程序能够被正确检测,意味着开发人员不再需要添加更多的检测来解决问题,因为其已拥有所有的信息。

OpenTelemetry是检测程序代码的机制,帮助我们建立系统的可观测性。

可靠性&指标

Telemetry指系统发出的有关其行为的数据,这些数据可以是链路、指标和日志多种形式。

可靠性回答了这样一个问题:服务在按照用户的期望运行吗?例如当用户单击“添加到购物车”以将一条黑色裤子添加到购物车,但系统却添加了一条红色裤子到购物车,那么我们就可以说这个系统是不可靠的。

指标是一段时间内有关基础设施或应用程序的数值数据的聚合,例如:系统错误率、CPU利用率、某个服务的请求速率等。

SLI,即Service Level Indicator,服务等级指标,表示对服务行为的度量,一个好的SLI应从用户角度衡量你的服务,例如SLI可以是网页加载速度。

SLO,即Service Level Objective,服务等级目标,是将可靠性传达给组织或其他团队的通道。SLO是通过将一个或多个SLI附加到业务价值来实现的。

了解分布式链路追踪

若要了解分布式链路追踪,需要先了解一些基础知识。

日志

日志是由服务或其他组件发出的带有时间戳的消息,但与追踪不同,它们不一定与任何特定的用户请求或事务相关联。日志在软件中几乎随处可见,并且过去开发人员和操作员都严重依赖它们来理解系统的行为。

示例日志:

I, [2021-02-23T13:26:23.505892 #22473]  INFO -- : [6459ffe1-ea53-4044-aaa3-bf902868f730] Started GET "/" for ::1 at 2021-02-23 13:26:23 -0800

遗憾的是,日志对于跟踪代码执行并不是非常有用,以为它们通常缺少上下文信息,例如从何处调用它们。

但是当日志作为Span的一部分时,就变得更加有意义了。

Span

Span表示工作单元或操作单元,它跟踪请求执行的特定操作,描述在执行该操作期间发生的细节。

Span包含名称、时间相关数据、结构化日志消息和其他元数据(即属性),以提供有关其追踪的操作的详细信息。

以下事是Span中存在的信息类型的示例:

KeyValue
net.transportIP.TCP
net.peer.ip10.244.0.1
net.peer.port10243
net.host.namelocalhost
http.methodGET
http.target/cart
http.server_namefrontend
http.route/cart
http.schemehttp
http.hostlocalhost
http.flavor1.1
http.status_code200
http.user_agentMozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36

 有关OpenTelemetry中Span的更多信息,可以参看:OpenTelemetry。

分布式链路追踪

分布式链路追踪,或者更多地叫链路追踪,记录请求(由应用程序或最终用户发出)在多服务体系架构(微服务或无服务架构)中传播时所经过的路径。

如果不进行追踪,则很难查明分布式系统中的性能瓶颈。

它提高了应用程序或系统运行状况的可见性,并允许我们调试难以在本地重现的行为。链路追踪对于分布式系统至关重要,分布式系统通常具有非确定性问题或因太复杂而无法在本地重现。

链路追踪通过分解请求流经分布式系统时的过程,使调试和理解分布式系统变得更加简单。

链路追踪由一个或多个Span组成,第一个表示根span,每个根span表示从开始到结束的请求。父级下方的Spans提供了请求过程更深入的上下文。

许多可观测性后端将链路追踪可视化为瀑布图:

这种图既可以表示请求顺序,也可以表示请求嵌套关系。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洒满阳光的午后

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值