INTEGRITY Dokumentace

Metriky a analytika

R2 Data Catalog poskytuje metriky, díky nimž můžete sledovat požadavky Iceberg REST API a úlohy údržby tabulek, tedy kompaktaci a vypršení platnosti snímků, napříč vašimi datovými sklady.

Metriky zobrazené v dashboardu Cloudflare se načítají z Cloudflare GraphQL Analytics API. K metrikám máte přístup přes programově přes GraphQL nebo libovolného HTTP klienta.

Metriky dashboardu

Metriky karta na stránce podrobností každého katalogu zobrazuje pět grafů, které shrnují aktivitu katalogu za nastavitelné časové období:

Graf Popis
Zkomprimované bajty Celkový počet bajtů zapsaných úlohami komprimace
Zkompaktované soubory Počet vstupních souborů zpracovaných a výstupních souborů vytvořených kompaktací
Požadavky na katalog Celkový počet požadavků na Iceberg REST API (například load-table, list-namespaces, commit-table)
Velikost úložiště Aktuální velikost úložiště bucketu
Vypršelé snímky Počet snapshotů odstraněných úlohami vypršení platnosti snapshotů

Stránka přehledu také zobrazuje Požadavky na katalog a Velikost bucketu sloupce v tabulce katalogů, které poskytují rychlý přehled o všech vašich katalozích.

Datové sady GraphQL

Metriky operací s daty

R2 Data Catalog exportuje níže uvedené metriky v rámci r2CatalogDataOperationsAdaptiveGroups datové sadě. Tyto metriky sledují požadavky Iceberg REST API odeslané do vašeho katalogu, například načítání tabulek, výpis oborů názvů a potvrzování aktualizací.

Metrika Název pole GraphQL Agregace Popis
Počet požadavků count count Celkový počet požadavků na Iceberg REST API
Bajty těla požadavku requestBodyBytes sum Celkový počet bajtů odeslaných v tělech požadavků
Doba trvání požadavku requestDurationMs sum, avg, quantiles Doba trvání požadavku v milisekundách

r2CatalogDataOperationsAdaptiveGroups poskytuje tyto dimenze pro filtrování a seskupování dotazů:

Metriky údržby tabulek

R2 Data Catalog exportuje níže uvedené metriky v rámci r2CatalogTableMaintenanceAdaptiveGroups datové sadě. Tyto metriky sledují úlohy údržby tabulek, včetně komprimace a expirace snímků.

Metrika Název pole GraphQL Agregace Popis
Počet úloh count count Celkový počet spuštěných úloh údržby
Zpracované soubory filesProcessed sum Celkový počet vstupních souborů zpracovaných úlohami údržby
Výstupní soubory filesOutput sum Celkový počet výstupních souborů vytvořených úlohami údržby
Vstupní bajty inputBytes sum Celkový počet bajtů přečtených nebo skenovaných úlohami údržby
Výstupní bajty outputBytes sum Celkový počet bajtů zapsaných úlohami údržby
Doba trvání úlohy jobDurationMs sum, avg, quantiles Doba trvání úlohy v milisekundách

r2CatalogTableMaintenanceAdaptiveGroups poskytuje tyto dimenze pro filtrování a seskupování dotazů:

Dotazování přes GraphQL API

Analytiku pro warehouse svého R2 Data Catalog můžete programově dotazovat pomocí GraphQL Analytics API. Toto API dotazuje stejné datové sady jako Cloudflare dashboard a podporuje GraphQL introspekce.

Datové sady R2 Data Catalog GraphQL vyžadují accountTag filtr s ID vašeho účtu Cloudflare.

Měření datových operací za časové období

Tento dotaz vrací celkový počet požadavků na Iceberg REST API a celkovou dobu trvání požadavků seskupenou podle operace pro konkrétní warehouse.

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

Měření percentilů latence požadavků

Tento dotaz vrací percentily doby trvání požadavků pro konkrétní warehouse, což je užitečné pro pochopení rozložení latence.

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

Dotazování metrik úloh údržby tabulek

Tento dotaz vrací souhrn úloh komprimace a expirace snímků pro konkrétní warehouse, včetně počtu zpracovaných souborů, přečtených a zapsaných bajtů a stavu úspěchu nebo selhání.

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

Filtrovat podle operace nebo tabulky

Výsledky můžete zúžit na konkrétní operaci nebo tabulku Iceberg. Chcete-li dotazovat například pouze load-table operace pro konkrétní tabulku:

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

Chcete-li dotazovat pouze neúspěšné úlohy údržby:

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

Dotazování napříč všemi datovými sklady

Chcete-li dotazovat metriky napříč všemi warehouse v účtu, vynechte warehouseName filtr a zahrňte warehouseName v dimenzích:

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