Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

メトリクスと分析

最終更新 Markdown で表示Agent セットアップ

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-tablelist-namespacescommit-table
Storage Size 現在のバケットストレージサイズ
Snapshots Expired スナップショット期限切れジョブが削除したスナップショット数

概要ページのカタログ表には Catalog RequestsBucket Size 列もあり、すべてのカタログの要約をすばやく確認できます。

GraphQL データセット

データ操作メトリクス

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-tablelist-namespacescommit-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 - メンテナンスジョブの種類(compactionsnapshot-expiration
  • namespaceName - テーブルを含む Iceberg 名前空間
  • tableName - メンテナンス対象の Iceberg テーブル
  • success - ジョブが成功したか(1)失敗したか(0
  • datetime - ジョブのタイムスタンプ
  • date - ジョブのタイムスタンプ(日の始まりに切り詰め)
  • datetimeHour - ジョブのタイムスタンプ(時の始まりに切り詰め)
  • datetimeMinute - ジョブのタイムスタンプ(分の始まりに切り詰め)
  • datetimeFiveMinutes - ジョブのタイムスタンプ(5 分の始まりに切り詰め)
  • datetimeFifteenMinutes - ジョブのタイムスタンプ(15 分の始まりに切り詰め)

GraphQL API で照会する

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
				}
			}
		}
	}
}

役に立ちましたか?