← R2 Data Catalog / r2-data-catalog / observability
Метрики и аналитика
R2 Data Catalog предоставляет метрики, которые позволяют отслеживать запросы Iceberg REST API и задачи обслуживания таблиц (уплотнение и истечение срока действия снимков) во всех ваших хранилищах.
Метрики, отображаемые в панели управления Cloudflare, запрашиваются из GraphQL Analytics API. Вы можете получить доступ к метрикам программно через GraphQL или любой HTTP клиент.
Метрики панели управления
Метрики вкладка на странице сведений о каждом каталоге показывает пять графиков, которые обобщают активность каталога за настраиваемый период времени:
| Диаграмма | Описание |
|---|---|
| Байт уплотнено | Общий объём байт, записанных заданиями компактификации |
| Уплотнённые файлы | Количество входных файлов, обработанных при уплотнении, и выходных файлов, созданных в результате |
| Запросы к каталогу | Общее количество запросов к Iceberg REST API (например, load-table, list-namespaces, commit-table) |
| Объём хранилища | Текущий размер хранилища бакета |
| Снимков с истекшим сроком действия | Количество снимков, удалённых заданиями по истечению срока действия снимков |
На странице обзора также отображаются Запросы к каталогу и Размер бакета столбцы в таблице каталогов, которые дают быстрый обзор по всем вашим каталогам.
Наборы данных GraphQL
Метрики операций с данными
R2 Data Catalog экспортирует указанные ниже метрики через r2CatalogDataOperationsAdaptiveGroups набор данных. Эти метрики отслеживают запросы Iceberg REST API к вашему каталогу, например загрузку таблиц, получение списка пространств имён и подтверждение изменений.
| Метрика | Имя поля GraphQL | Агрегация | Описание |
|---|---|---|---|
| Количество запросов | count |
count | Общее количество запросов к Iceberg REST API |
| Байты тела запроса | requestBodyBytes |
sum | Общий объём байт, отправленных в телах запросов |
| Длительность запроса | requestDurationMs |
sum, avg, квантили | Длительность запроса в миллисекундах |
r2CatalogDataOperationsAdaptiveGroups набор данных предоставляет следующие измерения для фильтрации и группировки запросов:
warehouseName- Имя warehouse в R2 Data Catalogoperation- Название операции Iceberg REST API (например,load-table,list-namespaces,commit-table)namespaceName- Пространство имён Iceberg, к которому относится запрос, если применимоtableName- Таблица Iceberg, к которой относится запрос, если применимоhttpStatus- код состояния ответа HTTPdatetime- отметка времени запросаdate- отметка времени запроса, округлённая до начала дняdatetimeHour- отметка времени запроса, округлённая до начала часаdatetimeMinute- отметка времени запроса, округлённая до начала минутыdatetimeFiveMinutes- отметка времени запроса, округлённая до начала пятиминутного интервалаdatetimeFifteenMinutes- отметка времени запроса, округлённая до начала пятнадцатиминутного интервала
Метрики обслуживания таблиц
R2 Data Catalog экспортирует указанные ниже метрики через r2CatalogTableMaintenanceAdaptiveGroups набор данных. Эти метрики отслеживают задания по обслуживанию таблиц, включая сжатие и истечение срока действия снимков.
| Метрика | Имя поля GraphQL | Агрегация | Описание |
|---|---|---|---|
| Количество заданий | count |
count | Общее количество выполненных заданий обслуживания |
| Обработанные файлы | filesProcessed |
sum | Общее количество входных файлов, обработанных заданиями обслуживания |
| Выходные файлы | filesOutput |
sum | Общее количество выходных файлов, созданных заданиями обслуживания |
| Входные байты | inputBytes |
sum | Общий объём байт, прочитанных или просканированных заданиями обслуживания |
| Исходящие байты | outputBytes |
sum | Общий объём байт, записанных заданиями обслуживания |
| Длительность задания | jobDurationMs |
sum, avg, квантили | Длительность задания в миллисекундах |
r2CatalogTableMaintenanceAdaptiveGroups набор данных предоставляет следующие измерения для фильтрации и группировки запросов:
warehouseName- Имя warehouse в R2 Data CatalogjobType- Тип задания обслуживания (compaction,snapshot-expiration)namespaceName- Пространство имён Iceberg, содержащее таблицуtableName- Таблица Iceberg, для которой выполнялось обслуживаниеsuccess- Успешно ли завершилось задание (1) или неудачными (0)datetime- отметка времени заданияdate- отметка времени задания, округлённая до начала дняdatetimeHour- отметка времени задания, округлённая до начала часаdatetimeMinute- отметка времени задания, округлённая до начала минутыdatetimeFiveMinutes- отметка времени задания, округлённая до начала пятиминутного интервалаdatetimeFifteenMinutes- отметка времени задания, округлённая до начала пятнадцатиминутного интервала
Запрос через GraphQL API
Вы можете программно запрашивать аналитику по вашим warehouse R2 Data Catalog через GraphQL Analytics API. Этот API запрашивает те же наборы данных, что и Cloudflare dashboard, и поддерживает GraphQL интроспекция.
Наборы данных GraphQL R2 Data Catalog требуют accountTag фильтр с вашим Cloudflare Account ID.
Измерение операций с данными за период времени
Этот запрос возвращает общее количество запросов к Iceberg REST API и суммарную длительность запросов с группировкой по операциям для конкретного 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
}
}
}
}
}Измерение процентилей задержки запросов
Этот запрос возвращает процентили длительности запросов для конкретного 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 фильтр и включите 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
}
}
}
}
}