了解 Datastore 模式 Firestore 中的性能监控

Cloud Monitoring 会从 Google Cloud 产品中收集指标、事件和元数据。借助 Cloud Monitoring,您还可以设置自定义信息中心和用量提醒。

本文档将指导您使用指标、了解自定义指标信息中心以及如何设置提醒。

受监控的资源

Cloud Monitoring 中的受监控的资源表示逻辑或物理实体,例如虚拟机、数据库或应用。受监控的资源包含一组唯一的指标,这些指标可通过信息中心进行浏览、报告,或者用于创建提醒。每项资源还有一组资源标签,这些标签是键值对,用于保存有关资源的其他信息。资源标签可用于与资源关联的所有指标。

使用 Cloud Monitoring API,可以通过以下资源监控 Datastore 模式 Firestore 的性能:

资源 说明 支持的数据库模式
firestore.googleapis.com/Database(推荐) 受监控的资源类型,可提供 projectlocation* 和 database_id 的细分数据。对于没有特定名称创建的数据库,database_id 标签将为 (default) 这两种模式都支持的所有指标,但 Datastore 模式 Firestore 不支持的以下指标除外:
  • document/delete_ops_count
  • document/read_ops_count
  • document/write_ops_count
datastore_request 受监控的 Datastore 项目的资源类型,不提供数据库细分数据。

指标

Firestore 有两种不同的模式:Firestore Native 和 Datastore 模式 Firestore。如需了解这两种模式之间的功能比较,请参阅选择数据库模式

如需查看 Datastore 模式下的 Firestore 指标的完整列表,请参阅 Datastore 中的 Firestore 指标

服务运行时指标

serviceruntime 指标提供项目流量的简要概览。大多数 Google Cloud API 都支持这些指标。consumed_api 受监控的资源类型包含以下通用指标。这些指标每 30 分钟进行一次采样,以使数据变得平滑。

serviceruntime 指标的一个重要资源标签是 method。此标签表示调用的底层 RPC 方法。您调用的 SDK 方法的名称不一定与底层 RPC 方法的名称相同。原因在于 SDK 提供了高级 API 抽象。但是,在尝试了解应用与 Firestore 的交互方式时,务必根据 RPC 方法的名称了解相关指标。

如果您需要了解给定 SDK 方法的底层 RPC 方法是什么,请参阅 API 文档

api/request_count

此指标提供已完成请求的数量,涉及协议(请求协议,例如 http、gRPC 等)、响应代码(HTTP 响应代码)、response_code_class(响应代码类别,例如 2xx、4xx 等)和 grpc_status_code数字 gRPC 响应代码)。使用此指标可观察整体 API 请求并计算错误率。

用于返回 2xx 代码的 api/request_count 指标。
图 1. api/request_count 指标(点击可放大)。

在图 1 中,可以看到返回 2xx 代码的请求(按服务和方法分组)。2xx 代码是表示请求成功的 HTTP 状态代码。

用于返回 2xx 代码的 api/request_count 指标。
图 2. 返回 2xx 代码的 api/request_count 指标(点击可放大)。

在图 2 中,可以看到按 response_code 分组的提交。在此示例中,我们仅看到 HTTP 200 响应,这表示数据库运行良好。

使用以下服务运行时指标来监控数据库。

datastore_request 资源类型中的 api/request_count

您也可以在具有 api_methodresponse_code 细分的 datastore_request 资源类型下找到 api/request_count 指标。请改用此指标来利用更精细的采样周期,这有助于捕获高峰。

datastore_request 资源下的 api/request_count 指标
图 3. datastore_request 资源下的 api/request_count 指标(点击可放大)。
api/request_latencies

api/request_latencies 指标提供所有已完成请求的延迟时间分布情况。

Firestore 会记录 Firestore Service 组件中的指标。延迟时间指标包括 Firestore 收到请求到 Firestore 完成响应发送之间的时间,包括与存储层的互动。因此,这些指标不包括客户端与 Firestore 服务之间的往返延迟时间 (rtt)。

用于计算延迟时间分布情况的 api/request_latencies
图 4. api/request_latencies,计算延迟时间分布情况。
api/request_sizes 和 api/response_sizes

api/request_sizesapi/response_sizes 指标分别提供了关于载荷大小(以字节为单位)的数据分析。这些日志可帮助您了解发送大量数据或查询过于宽泛并返回大型载荷的写入工作负载。

api/request_sizes 和 api/response_sizes 指标
图 5.api/request_sizes 和 api/response_sizes 指标(点击可放大)。

在图 5 中,可以看到 RunQuery 方法的响应大小的热图。我们可以看到,大小是稳定的,中位数为 50 个字节,总体介于 10 个字节到 100 个字节之间。请注意,载荷大小始终以未压缩的字节为单位,不包括传输控制开销。

实体操作指标

这些指标提供了 Firestore 数据库读取(查找和查询)和写入的载荷大小分布(以字节为单位)。这些值表示载荷的总大小。例如,查询返回的任何结果。 这些指标与 api/request_sizesapi/response_sizes 指标类似,主要区别在于实体操作指标提供的采样更精细,但细分精细程度较低。

例如,实体操作指标使用 datastore_request 受监控的资源,因此不存在服务或方法细分。

  • entity/read_sizes:读取实体的大小分布情况,按类型分组。
  • entity/write_sizes:写入实体的大小分布情况,按操作分组。

索引指标

您可将索引写入速率与 document/write_ops_count 指标进行比较,以了解 索引扇出比率

  • index/write_count:索引写入的计数。
索引写入速率与文档写入速率对比
图 7.索引写入速率与文档写入速率(点击可放大)的对比。

在图 7 中,您可以看到索引写入速率与文档写入速率的对比。在此示例中,每次文档写入大约有 6 次索引写入,索引扇出率相对较小。

TTL 指标

TTL 指标适用于 Firestore 原生数据库和 Datastore 模式 Firestore 数据库。使用这些指标可以监控强制执行 TTL 政策的效果。

  • entity/ttl_deletion_count:TTL 服务删除的实体总数。
  • entity/ttl_expiration_to_deletion_delays:具有 TTL 的实体到期与实际删除实体之间的间隔时间。

    如果您发现 TTL 删除延迟的时间超过 24 小时,请与支持团队联系

后续步骤