插桩和可观测性

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

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

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

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

图示:进程插桩的架构。

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

关于供应商中立的插桩框架

即使您打算仅将遥测数据发送到 Google Cloud,我们也建议您使用与供应商无关的开源插桩框架来对应用进行插桩处理。这类框架具有以下主要优势:

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

一般建议

本部分包含有关如何对 应用。如需了解特定于 Google Cloud 的指导,请参阅选择插桩方法

如需收集指标,我们建议您使用 OpenTelemetryPrometheus

  • OpenTelemetry 是一个开源项目,用于为应用插桩提供统一框架。它还提供 常用库的插桩库。 OpenTelemetry 提供了一个独立的代理 OpenTelemetry Collector,该代理可以接收、转换和导出遥测数据。OpenTelemetry 收集器配置文件决定了 OpenTelemetry 收集器的行为。如需将遥测数据发送到代理或直接发送到存储系统,请使用 OpenTelemetry 协议 (OTLP)

  • Prometheus 是一种 监控系统。您可以使用 Prometheus 客户端库从应用生成指标,并且有一个针对常用框架的插桩库的第三方生态系统。Prometheus 客户端将其指标公开为 HTTP 端点, 由代理抓取。

如需收集跟踪记录,我们建议您使用 OpenTelemetry

如需收集日志,我们建议您使用可 配置为输出 适用于 Cloud Logging 的 JSON 结构日志。 对于写入日志数据,我们给出以下建议:

Google Cloud 解决方案

Google Cloud Observability 为收集遥测数据提供了灵活的选项:

后续步骤

如需详细了解 Google Cloud Observability,请参阅 Google Cloud 中的可观测性