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-table、list-namespaces、commit-table) |
| Storage Size(存储大小) | 当前存储桶存储大小 |
| Snapshots Expired(已过期快照) | 快照过期作业删除的快照数量 |
概览页还在 catalog 表中显示 Catalog Requests(Catalog 请求) 和 Bucket Size(存储桶大小) 列,提供所有 catalog 的快速摘要。
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-table、list-namespaces、commit-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- 维护作业类型(compaction、snapshot-expiration)namespaceName- 包含表的 Iceberg namespacetableName- 被维护的 Iceberg 表success- 作业是否成功(1)或失败(0)datetime- 作业时间戳date- 作业时间戳,截断到天开始datetimeHour- 作业时间戳,截断到小时开始datetimeMinute- 作业时间戳,截断到分钟开始datetimeFiveMinutes- 作业时间戳,截断到五分钟开始datetimeFifteenMinutes- 作业时间戳,截断到十五分钟开始
您可以通过 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 的指标,省略 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
}
}
}
}
}