本主题介绍如何检查 Spanner 组件以查找延迟来源并使用 OpenTelemetry 直观呈现延迟。如需大致了解本主题中的组件,请参阅 Spanner 请求中的延迟时间点。
OpenTelemetry 是一个开源可观测性框架和工具包,可用于创建和管理遥测数据,例如跟踪记录、指标和日志。这是 OpenTracing 与 OpenCensus 之间合并的结果。如需了解详情,请参阅什么是 OpenTelemetry?
Spanner 客户端库利用 OpenTelemetry 可观测性框架提供指标和跟踪记录。按照确定延迟点中的过程,查找在 Spanner 中显示延迟的组件或组件。
准备工作
在开始捕获延迟时间指标之前,请先熟悉使用 OpenTelemetry 手动插桩。您必须使用用于导出遥测数据的相应选项配置 OpenTelemetry SDK。我们提供了多种 OpenTelemetry 导出器选项。我们建议使用 OpenTelemetry 协议 (OTLP) 导出器。其他方案包括将 OTel 收集器与 Google Cloud Exporter 或 Google Managed Service for Prometheus Exporter 结合使用。
如果您在 Compute Engine 上运行应用,则可以使用 Ops Agent 来收集 OpenTelemetry Protocol 指标和跟踪记录。如需了解详情,请参阅收集 OTLP 指标和跟踪记录。
添加依赖项
如需配置 OpenTelemetry SDK 和 OTLP 导出器,请将以下依赖项添加到您的应用。
Java
Go
注入 OpenTelemetry 对象
然后,使用 OTLP 导出器创建一个 OpenTelemetry 对象,并使用 SpannerOptions
注入 OpenTelemetry 对象。
Java
Go
捕获并直观呈现客户端往返延迟时间
客户端往返延迟时间是指客户端通过 GFE 和 Spanner API 前端向数据库发送的 Spanner API 请求的第一个字节与客户端从数据库收到的响应的最后一个字节之间的时长(以毫秒为单位)。
捕获客户端往返延迟时间
使用 OpenTelemetry 时,不支持 Spanner 客户端往返延迟时间指标。您可以通过迁移桥使用 OpenCensus 对指标进行插桩,并将数据迁移到 OpenTelemetry。
直观呈现客户端往返延迟时间
检索指标后,您可以在 Cloud Monitoring 中直观呈现客户端往返延迟时间。
以下示例图表说明了客户端往返延迟时间指标的第 5 百分位延迟时间。如需将百分位延迟时间更改为第 50 或第 99 百分位,请使用聚合器菜单。
该程序会创建一个名为 roundtrip_latency
的视图。在指标导出到 Cloud Monitoring 时,此字符串会成为指标名称的一部分。
捕获并直观呈现 GFE 延迟
Google Front End (GFE) 延迟时间是指 Google 网络收到来自客户端的远程过程调用与 GFE 接收响应的第一个字节之间的时长(以毫秒为单位)。
捕获 GFE 延迟数据
您可以使用 Spanner 客户端库启用以下选项,以捕获 GFE 延迟时间指标。
Java
Go
直观呈现 GFE 延迟时间
检索指标后,您可以在 Cloud Monitoring 中直观呈现 GFE 延迟时间。
下面是一个图表示例,显示了 GFE 延迟时间指标的分布聚合情况。如需将百分位延迟时间更改为第 5、50、第 95 或第 99 百分位,请使用聚合器菜单。
该程序会创建一个名为 spanner/gfe_latency
的视图。在指标导出到 Cloud Monitoring 时,此字符串会成为指标名称的一部分。
捕获并直观呈现 Spanner API 请求延迟时间
Spanner API 请求延迟时间是指 Spanner API 前端收到的请求的第一个字节与 Spanner API 前端发送的最后一个响应字节之间的时间长度(以秒为单位)。
捕获 Spanner API 请求延迟时间
默认情况下,此延迟时间可作为 Cloud Monitoring 指标的一部分提供。您无需执行任何操作即可捕获和导出此数据。
直观呈现 Spanner API 请求延迟时间
您可以使用 Metrics Explorer 图表工具直观呈现 Cloud Monitoring 中 spanner.googleapis.com/api/request_latencies
指标的图表。
以下示例图表说明了 Spanner API 请求延迟时间指标的第 5 百分位延迟时间。如需将百分位延迟时间更改为第 50 或第 99 百分位,请使用聚合器菜单。
捕获并直观呈现查询延迟时间
查询延迟时间是在 Spanner 数据库中运行 SQL 查询所需的时间(以毫秒为单位)。
捕获查询延迟时间
您可以捕获以下语言的查询延迟时间:
Java
Go
直观呈现查询延迟时间
检索指标后,您可以在 Cloud Monitoring 中直观呈现查询延迟时间。
下面是一个图表示例,显示了 GFE 延迟时间指标的分布聚合情况。如需将百分位延迟时间更改为第 5、50、第 95 或第 99 百分位,请使用聚合器菜单。
该程序会创建一个名为 query_stats_elapsed
的 OpenCensus 视图。在指标导出到 Cloud Monitoring 时,此字符串会成为指标名称的一部分。
后续步骤
详细了解 OpenTelemetry。
了解如何迁移到 OpenTelemetry。
了解如何使用metrics来诊断延迟时间。