可观测性入门

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

什么是可观测性h2>

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

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

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

可靠性&指标

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

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

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

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

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

了解分布式链路追踪

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

日志

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

示例日志:

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

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

Span

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

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

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

Key Value
net.transport IP.TCP
net.peer.ip 10.244.0.1
net.peer.port 10243
net.host.name localhost
http.method GET
http.target /cart
http.server_name frontend
http.route /cart
http.scheme http
http.host localhost
http.flavor 1.1
http.status_code 200
http.user_agent Mozilla/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提供了请求过程更深入的上下文。

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

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

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年9月15日
下一篇 2022年9月15日

相关推荐