R2 Data Catalog はメトリクスを公開しており、ウェアハウス全体の Iceberg REST API リクエストとテーブルメンテナンスジョブ(コンパクションとスナップショット期限切れ)を監視できます。
Cloudflare ダッシュボードに表示されるメトリクスは、Cloudflare の GraphQL Analytics API から照会されます。GraphQL または任意の HTTP クライアントで、メトリクスに プログラムから アクセスできます。
各カタログの詳細ページにある Metrics タブには、設定可能な時間範囲のカタログ活動を要約する 5 つのチャートが表示されます。
| チャート | 説明 |
|---|---|
| Bytes Compacted | コンパクションジョブが書き込んだ合計バイト数 |
| Files Compacted | コンパクションが処理した入力ファイル数と作成した出力ファイル数 |
| Catalog Requests | Iceberg REST API リクエストの合計(例: load-table、list-namespaces、commit-table) |
| Storage Size | 現在のバケットストレージサイズ |
| Snapshots Expired | スナップショット期限切れジョブが削除したスナップショット数 |
概要ページのカタログ表には Catalog Requests と Bucket Size 列もあり、すべてのカタログの要約をすばやく確認できます。
R2 Data Catalog は、次のメトリクスを r2CatalogDataOperationsAdaptiveGroups データセットで公開します。これらのメトリクスは、テーブルの読み込み、名前空間の一覧、更新のコミットなど、カタログに対する Iceberg REST API リクエストを追跡します。
| メトリクス | GraphQL フィールド名 | 集計 | 説明 |
|---|---|---|---|
| リクエスト数 | count |
count | Iceberg REST API リクエストの合計数 |
| リクエスト本文バイト数 | requestBodyBytes |
sum | リクエスト本文で送信した合計バイト数 |
| リクエスト所要時間 | requestDurationMs |
sum, avg, quantiles | リクエスト所要時間(ミリ秒) |
r2CatalogDataOperationsAdaptiveGroups データセットでは、照会のフィルタとグループ化に次のディメンションを使えます。
warehouseName- R2 Data Catalog ウェアハウスの名前operation- Iceberg REST API の操作名(例:load-table、list-namespaces、commit-table)namespaceName- リクエストの対象 Iceberg 名前空間(該当する場合)tableName- リクエストの対象 Iceberg テーブル(該当する場合)httpStatus- HTTP レスポンスステータスコードdatetime- リクエストのタイムスタンプdate- リクエストのタイムスタンプ(日の始まりに切り詰め)datetimeHour- リクエストのタイムスタンプ(時の始まりに切り詰め)datetimeMinute- リクエストのタイムスタンプ(分の始まりに切り詰め)datetimeFiveMinutes- リクエストのタイムスタンプ(5 分の始まりに切り詰め)datetimeFifteenMinutes- リクエストのタイムスタンプ(15 分の始まりに切り詰め)
R2 Data Catalog は、次のメトリクスを r2CatalogTableMaintenanceAdaptiveGroups データセットで公開します。これらのメトリクスは、コンパクションとスナップショット期限切れ を含むテーブルメンテナンスジョブを追跡します。
| メトリクス | GraphQL フィールド名 | 集計 | 説明 |
|---|---|---|---|
| ジョブ数 | count |
count | 実行したメンテナンスジョブの合計数 |
| 処理ファイル数 | filesProcessed |
sum | メンテナンスジョブが処理した入力ファイルの合計 |
| 出力ファイル数 | filesOutput |
sum | メンテナンスジョブが作成した出力ファイルの合計 |
| 入力バイト数 | inputBytes |
sum | メンテナンスジョブが読み取りまたはスキャンした合計バイト数 |
| 出力バイト数 | outputBytes |
sum | メンテナンスジョブが書き込んだ合計バイト数 |
| ジョブ所要時間 | jobDurationMs |
sum, avg, quantiles | ジョブ所要時間(ミリ秒) |
r2CatalogTableMaintenanceAdaptiveGroups データセットでは、照会のフィルタとグループ化に次のディメンションを使えます。
warehouseName- R2 Data Catalog ウェアハウスの名前jobType- メンテナンスジョブの種類(compaction、snapshot-expiration)namespaceName- テーブルを含む Iceberg 名前空間tableName- メンテナンス対象の Iceberg テーブルsuccess- ジョブが成功したか(1)失敗したか(0)datetime- ジョブのタイムスタンプdate- ジョブのタイムスタンプ(日の始まりに切り詰め)datetimeHour- ジョブのタイムスタンプ(時の始まりに切り詰め)datetimeMinute- ジョブのタイムスタンプ(分の始まりに切り詰め)datetimeFiveMinutes- ジョブのタイムスタンプ(5 分の始まりに切り詰め)datetimeFifteenMinutes- ジョブのタイムスタンプ(15 分の始まりに切り詰め)
GraphQL Analytics API を使って、R2 Data Catalog ウェアハウスの分析をプログラムから照会できます。この API は Cloudflare ダッシュボードと同じデータセットを照会し、GraphQL の イントロスペクション にも対応しています。
R2 Data Catalog の GraphQL データセットには、Cloudflare アカウント ID を指定する accountTag フィルターが必要です。
このクエリは、特定のウェアハウスについて、操作ごとにグループ化した 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
}
}
}
}
}このクエリは、特定のウェアハウスのリクエスト所要時間のパーセンタイルを返します。レイテンシ分布の把握に役立ちます。
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
}
}
}
}
}このクエリは、特定のウェアハウスについて、コンパクションとスナップショット期限切れジョブの要約を返します。処理したファイル、読み書きしたバイト数、成功または失敗の状態を含みます。
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
}
}
}
}
}アカウント上のすべてのウェアハウスのメトリクスを照会するには、warehouseName フィルターを外し、ディメンションに 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
}
}
}
}
}