跳转到内容
搜索文档

指标和分析

最后更新 查看 MarkdownAgent 设置

R2 Data Catalog 公开指标,使您能够监控 Iceberg REST API 请求和表维护作业(压缩和快照过期)在各 warehouse 中的情况。

Cloudflare 仪表板中显示的指标来自 Cloudflare 的 GraphQL Analytics API。您可以通过 GraphQL 或任何 HTTP 客户端以编程方式访问这些指标。

仪表板指标

每个 catalog 详情页上的 Metrics(指标) 选项卡显示五个图表,汇总可配置时间范围内的 catalog 活动:

图表 描述
Bytes Compacted(已压缩字节) 压缩作业写入的总字节数
Files Compacted(已压缩文件) 压缩处理并创建的输入/输出文件数量
Catalog Requests(Catalog 请求) Iceberg REST API 请求总数(例如 load-tablelist-namespacescommit-table
Storage Size(存储大小) 当前存储桶存储大小
Snapshots Expired(已过期快照) 快照过期作业删除的快照数量

概览页还在 catalog 表中显示 Catalog Requests(Catalog 请求)Bucket Size(存储桶大小) 列,提供所有 catalog 的快速摘要。

GraphQL 数据集

数据操作指标

R2 Data Catalog 在 r2CatalogDataOperationsAdaptiveGroups 数据集中导出以下指标。这些指标跟踪对 catalog 发出的 Iceberg REST API 请求,如加载表、列出 namespace 和提交更新。

指标 GraphQL 字段名 聚合 描述
请求计数 count count Iceberg REST API 请求总数
请求体字节数 requestBodyBytes sum 请求体中发送的总字节数
请求持续时间 requestDurationMs sum, avg, quantiles 请求持续时间(毫秒)

r2CatalogDataOperationsAdaptiveGroups 数据集提供以下维度用于过滤和分组查询:

  • warehouseName - R2 Data Catalog warehouse 的名称
  • operation - Iceberg REST API 操作名称(例如 load-tablelist-namespacescommit-table
  • namespaceName - 请求目标 Iceberg namespace(如适用)
  • tableName - 请求目标 Iceberg 表(如适用)
  • httpStatus - HTTP 响应状态码
  • datetime - 请求时间戳
  • date - 请求时间戳,截断到天开始
  • datetimeHour - 请求时间戳,截断到小时开始
  • datetimeMinute - 请求时间戳,截断到分钟开始
  • datetimeFiveMinutes - 请求时间戳,截断到五分钟开始
  • datetimeFifteenMinutes - 请求时间戳,截断到十五分钟开始

表维护指标

R2 Data Catalog 在 r2CatalogTableMaintenanceAdaptiveGroups 数据集中导出以下指标。这些指标跟踪表维护作业,包括压缩和快照过期

指标 GraphQL 字段名 聚合 描述
作业计数 count count 执行的维护作业总数
处理的文件 filesProcessed sum 维护作业处理的输入文件总数
输出文件 filesOutput sum 维护作业创建的输出文件总数
输入字节数 inputBytes sum 维护作业读取或扫描的总字节数
输出字节数 outputBytes sum 维护作业写入的总字节数
作业持续时间 jobDurationMs sum, avg, quantiles 作业持续时间(毫秒)

r2CatalogTableMaintenanceAdaptiveGroups 数据集提供以下维度用于过滤和分组查询:

  • warehouseName - R2 Data Catalog warehouse 的名称
  • jobType - 维护作业类型(compactionsnapshot-expiration
  • namespaceName - 包含表的 Iceberg namespace
  • tableName - 被维护的 Iceberg 表
  • success - 作业是否成功(1)或失败(0
  • datetime - 作业时间戳
  • date - 作业时间戳,截断到天开始
  • datetimeHour - 作业时间戳,截断到小时开始
  • datetimeMinute - 作业时间戳,截断到分钟开始
  • datetimeFiveMinutes - 作业时间戳,截断到五分钟开始
  • datetimeFifteenMinutes - 作业时间戳,截断到十五分钟开始

通过 GraphQL API 查询

您可以通过 GraphQL Analytics API 以编程方式查询 R2 Data Catalog warehouse 的分析数据。此 API 查询与 Cloudflare 仪表板相同的数据集,并支持 GraphQL 内省

R2 Data Catalog GraphQL 数据集需要带有 Cloudflare 账户 ID 的 accountTag 过滤器。

测量时间段内的数据操作

此查询返回特定 warehouse 按操作分组的总 Iceberg REST API 请求数和总请求持续时间。

query CatalogDataOperations(
	$accountTag: String!
	$warehouseName: String!
	$datetimeStart: Time!
	$datetimeEnd: Time!
) {
	viewer {
		accounts(filter: { accountTag: $accountTag }) {
			r2CatalogDataOperationsAdaptiveGroups(
				limit: 10000
				filter: {
					warehouseName: $warehouseName
					datetime_geq: $datetimeStart
					datetime_leq: $datetimeEnd
				}
			) {
				count
				dimensions {
					operation
				}
				sum {
					requestBodyBytes
					requestDurationMs
				}
				avg {
					requestDurationMs
				}
			}
		}
	}
}

测量请求延迟百分位数

此查询返回特定 warehouse 的请求持续时间百分位数,有助于了解延迟分布。

query CatalogLatencyPercentiles(
	$accountTag: String!
	$warehouseName: String!
	$datetimeStart: Time!
	$datetimeEnd: Time!
) {
	viewer {
		accounts(filter: { accountTag: $accountTag }) {
			r2CatalogDataOperationsAdaptiveGroups(
				limit: 10000
				filter: {
					warehouseName: $warehouseName
					datetime_geq: $datetimeStart
					datetime_leq: $datetimeEnd
				}
			) {
				count
				dimensions {
					operation
				}
				quantiles {
					requestDurationMsP50
					requestDurationMsP90
					requestDurationMsP99
				}
			}
		}
	}
}

查询表维护作业指标

此查询返回特定 warehouse 的压缩和快照过期作业摘要,包括处理的文件、读写字节数以及成功或失败状态。

query CatalogMaintenanceMetrics(
	$accountTag: String!
	$warehouseName: String!
	$datetimeStart: Time!
	$datetimeEnd: Time!
) {
	viewer {
		accounts(filter: { accountTag: $accountTag }) {
			r2CatalogTableMaintenanceAdaptiveGroups(
				limit: 10000
				filter: {
					warehouseName: $warehouseName
					datetime_geq: $datetimeStart
					datetime_leq: $datetimeEnd
				}
			) {
				count
				dimensions {
					jobType
					tableName
					success
				}
				sum {
					filesProcessed
					filesOutput
					inputBytes
					outputBytes
					jobDurationMs
				}
			}
		}
	}
}

按操作或表过滤

您可以将结果缩小到特定的 Iceberg 操作或表。例如,仅查询特定表的 load-table 操作:

query CatalogFilterByOperation(
	$accountTag: String!
	$datetimeStart: Time!
	$datetimeEnd: Time!
) {
	viewer {
		accounts(filter: { accountTag: $accountTag }) {
			r2CatalogDataOperationsAdaptiveGroups(
				limit: 10000
				filter: {
					warehouseName: "my-warehouse"
					operation: "load-table"
					tableName: "my_table"
					datetime_geq: $datetimeStart
					datetime_leq: $datetimeEnd
				}
			) {
				count
				sum {
					requestDurationMs
				}
			}
		}
	}
}

仅查询失败的维护作业:

query CatalogFailedMaintenanceJobs(
	$accountTag: String!
	$datetimeStart: Time!
	$datetimeEnd: Time!
) {
	viewer {
		accounts(filter: { accountTag: $accountTag }) {
			r2CatalogTableMaintenanceAdaptiveGroups(
				limit: 10000
				filter: {
					warehouseName: "my-warehouse"
					success: 0
					datetime_geq: $datetimeStart
					datetime_leq: $datetimeEnd
				}
			) {
				count
				dimensions {
					jobType
					tableName
				}
			}
		}
	}
}

跨所有 warehouse 查询

要查询账户上所有 warehouse 的指标,省略 warehouseName 过滤器并在 dimensions 中包含 warehouseName

query CatalogAllWarehouses(
	$accountTag: String!
	$datetimeStart: Time!
	$datetimeEnd: Time!
) {
	viewer {
		accounts(filter: { accountTag: $accountTag }) {
			r2CatalogDataOperationsAdaptiveGroups(
				limit: 10000
				filter: { datetime_geq: $datetimeStart, datetime_leq: $datetimeEnd }
			) {
				count
				dimensions {
					warehouseName
					operation
				}
				sum {
					requestDurationMs
				}
			}
		}
	}
}

这篇文档对您有帮助吗?