面向应用开发者的可观测性

如果您编写应用,则可以对代码进行插桩以生成遥测数据,并深入了解应用的内部运行时行为。本页面介绍了进程内插桩概念,说明了 OpenTelemetry 等与供应商无关的框架的优势,并引导您查看 Google Cloud Observability 的语言专用指南和代码示例。

什么是插桩和可观测性?

插桩是指生成或收集有关应用运行时行为的数据的特定代码。 在应用内部, 插桩(例如 OpenTelemetry 提供的插桩)可以收集有关 语言运行时、框架或应用逻辑的领域特定信息,然后将该数据 发送到 Google Cloud 项目或其他目标位置。 这些数据(也称为遥测数据)包括 日志、指标和跟踪记录。

系统级指标(如 CPU 使用率、内存用量和磁盘使用率)对于检测应用的问题非常有用,但它们无法提供关于应用级问题的详细分析洞见。插桩可以帮助应用生成诊断问题根本原因所需的数据,因为生成的遥测数据会显示应用内部发生的情况。 例如,日志通常包含有关程序的上下文,例如特定错误消息或堆栈轨迹,以及源代码中的位置。同样,分布式跟踪记录可帮助您了解多个服务在处理请求时如何进行交互。通过指标,您可以确定应用何时行为不正常。

对应用进行插桩涉及生成遥测数据并将其发送到可存储和查询数据的系统。例如,您的 插桩可能会将遥测数据发送到 Google Cloud 项目。 Google Cloud Observability 中的服务可帮助您收集、分析和关联遥测数据。它们还提供了内置默认设置,可帮助您更快地开始使用,例如默认信息中心和提醒政策。如需详细了解 Google Cloud Observability,请参阅 中的可观测性 Google Cloud。

下图说明了应用如何使用插桩生成遥测数据并将其发送到存储系统:

此图演示了进程内插桩的架构。

如上图所示,插桩代码存在于应用的进程中,并与应用交互以生成遥测数据。然后,插桩框架将遥测数据导出到已配置的存储系统。在该图中,存储系统是您的 Google Cloud 项目。

为什么要使用与供应商无关的插桩框架

即使您打算仅将遥测数据发送到 Google Cloud,我们也建议您 使用不受制于供应商的开源插桩框架来对您的 应用进行插桩。这些类型的框架具有一些主要优势:

不受制于特定供应商
与供应商无关的框架不依赖于任何特定的供应商,它们为生成的遥测提供自己的数据模型。因此,您可以将数据发送给多个供应商,并且通常可以更改所使用的供应商,而无需修改代码。
收集遥测数据的标准化程序
OpenTelemetry 等精心设计的框架提供了一种标准化方法来从应用中收集遥测数据。您可以对采用受支持语言编写的应用使用相同的框架。由于框架是标准化的,因此您可以收集和比较所有服务的遥测数据。
可互操作的库
插桩框架包含一个丰富的库生态系统,用于收集遥测信号,并且这些库是可互操作的。 例如,OpenTelemetry 提供了用于收集跟踪记录数据和收集指标数据的库。您可以单独使用其中一个库,也可以同时使用这两个库。

确定插桩策略

示例和实现指南