本文档介绍了如何使用 OpenTelemetry 捕获自定义客户端指标。您可以使用 Java 和 Go 客户端库使用自定义客户端指标。
自定义客户端指标可帮助您查找系统中延迟时间的来源。如需了解详情,请参阅 Spanner 请求中的延迟时间点。
Spanner 客户端库还使用 OpenTelemetry 可观测性框架提供统计信息和跟踪记录。如需了解详情,请参阅使用 OpenTelemetry 设置轨迹收集。
OpenTelemetry 是一个开源可观测性框架和工具包,可让您创建和管理跟踪记录、指标和日志等遥测数据。
准备工作
您需要使用适当的选项配置 OpenTelemetry SDK,以导出遥测数据。我们建议使用 OpenTelemetry 协议 (OTLP) 导出器。
如需使用 OpenTelemetry 设置自定义客户端指标,您需要配置 OpenTelemetry SDK 和 OTLP 导出器:
使用以下代码将必要的依赖项添加到您的应用:
Java
Go
使用 OTLP 导出器创建 OpenTelemetry 对象,然后使用
SpannerOptions
将其注入 Spanner:Java
Go
捕获 GFE 延迟时间
Google Front End (GFE) 延迟时间是指 Google 网络收到来自客户端的远程过程调用与 GFE 收到响应的第一个字节之间的时长(以毫秒为单位)。
您可以使用以下代码捕获 GFE 延迟时间:
Java
Go
该代码示例会在将指标导出到 Cloud Monitoring 时,将字符串 spanner/gfe_latency
附加到指标名称。您可以在 Cloud Monitoring 中使用附加的字符串搜索此指标。
捕获 Cloud Spanner API 请求延迟时间
Cloud Spanner API 请求延迟时间是 Cloud Spanner API 前端收到客户端请求的第一个字节与 Cloud Spanner API 前端发送响应的最后一个字节之间的时间(以秒为单位)。
此延迟时间指标在 Cloud Monitoring 指标中提供。
捕获客户端往返延迟时间
客户端往返延迟时间是指客户端发送到数据库(通过 GFE 和 Cloud Spanner API 前端)的 Cloud Spanner API 请求的第一个字节到客户端从数据库收到的响应的最后一个字节之间的时长(以毫秒为单位)。
不支持使用 OpenTelemetry 获取 Spanner 客户端往返延迟时间指标。您可以改为查看操作延迟时间客户端指标。如需了解详情,请参阅客户端指标说明。
您还可以使用 bridge 通过 OpenCensus 对指标进行插桩,并将数据迁移到 OpenTelemetry。
捕获查询延迟时间
查询延迟时间是在 Spanner 数据库中运行 SQL 查询所需的时长(以毫秒为单位)。
您可以使用以下代码捕获查询延迟时间:
Java
Go
该代码示例会在将指标导出到 Cloud Monitoring 时,将字符串 spanner/query_stats_elapsed
附加到指标名称。您可以在 Cloud Monitoring 中使用附加的字符串搜索此指标。
在 Metrics Explorer 中查看指标
在 Google Cloud 控制台中,前往 Metrics Explorer 页面。
选择您的项目。
点击选择指标。
使用以下字符串搜索延迟时间指标:
roundtrip_latency
:适用于客户端往返延迟时间指标。spanner/gfe_latency
:适用于 GFE 延迟时间指标。spanner/query_stats_elapsed
:适用于查询延迟时间指标。
选择相应指标,然后点击应用。
如需详细了解如何对指标进行分组或汇总,请参阅使用菜单构建查询。
后续步骤
- 详细了解 OpenTelemetry。
- 了解如何配置 OpenTelemetry SDK。
- 了解如何迁移到 OpenTelemetry。
- 了解如何使用指标诊断延迟时间。