本主题介绍了如何检查 Spanner 组件来查找延迟来源,并使用 OpenTelemetry 直观呈现延迟。如需简要了解本主题中的组件,请参阅 Spanner 请求中的延迟时间点。
OpenTelemetry 是一个开源可观测性框架和工具包,可用于创建和管理遥测数据,例如跟踪记录、指标和日志。这是 OpenTracing 和 OpenCensus 合并的结果。如需了解详情,请参阅什么是 OpenTelemetry?
Spanner 客户端库利用 OpenTelemetry 可观测性框架提供指标和跟踪记录。按照确定延迟时间点中的步骤查找 Spanner 中显示延迟时间的组件。
准备工作
在开始捕获延迟时间指标之前,请先熟悉使用 OpenTelemetry 进行手动插桩。您必须使用用于导出遥测数据的适当选项配置 OpenTelemetry SDK。有多个 OpenTelemetry 导出器选项可供选择。我们建议使用 OpenTelemetry Protocol (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
捕获并直观呈现客户端往返延迟
客户端往返延迟时间是指客户端向数据库发送的 Spanner API 请求的第一个字节(通过 GFE 和 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诊断延迟时间。