메트릭과 분석 (Metrics and analytics)
R2의 스토리지·작업·대역폭 사용량 메트릭을 확인하는 방법을 알려드려요.
출처: 문서
본문
R2는 버킷 전반의 요청·스토리지·대역폭 사용량에 대한 분석을 제공해요. Cloudflare 대시보드 ↗︎에서 버킷에 표시되는 메트릭은 Cloudflare의 GraphQL Analytics API로 조회한 값이에요. 메트릭은 프로그래밍 방식으로 GraphQL이나 HTTP 클라이언트를 통해 접근할 수도 있어요.
메트릭 (Metrics)
R2에는 세 가지 데이터셋이 있어요:
| 데이터셋(Dataset) | GraphQL 데이터셋 이름 | 설명(Description) |
|---|---|---|
| 작업(Operations) | r2OperationsAdaptiveGroups |
계정 내 버킷에 대해 수행된 작업으로 구성된 데이터셋. |
| 스토리지(Storage) | r2StorageAdaptiveGroups |
계정 내 버킷의 스토리지로 구성된 데이터셋. |
| 대역폭(Bandwidth) | r2BandwidthUsageAdaptiveGroups |
계정 내 버킷의 업로드·다운로드 바이트를 담은 데이터셋. |
메트릭은 최대 31일 범위로 조회할 수 있어요. 이 데이터셋들은 Cloudflare 계정 ID를 담은 accountTag 필터가 필요해요.
관할권(jurisdiction) 제한이 있는 버킷 조회
계정 안에는 같은 이름의 버킷이 두 개 있을 수 있어요. 하나는 관할권(jurisdiction)이 지정되어 있고, 다른 하나는 없을 수 있죠.
그래서 관할권이 지정된 버킷에 대한 메트릭을 조회하려면 버킷 이름 앞에 관할권 뒤에 밑줄(underscore)을 붙여야 해요. 예:
eu_bucket-name. 이렇게 해야 올바른 버킷을 조회할 수 있어요.
Operations 데이터셋
| 필드(Field) | 설명(Description) |
|---|---|
| actionType | 수행된 작업의 이름. |
| actionStatus | 작업의 상태. success, userError, 또는 internalError일 수 있음. |
| bucketName | 해당하는 경우 작업이 수행된 버킷. 관할권이 지정된 버킷은 버킷 이름 앞에 관할권과 밑줄을 포함해야 함. 예: eu_your-bucket-name |
| objectName | 해당하는 경우 작업이 수행된 객체. |
| responseStatusCode | 이 작업이 반환한 http 상태 코드. |
| datetime | 요청 시각. |
Storage 데이터셋
| 필드(Field) | 설명(Description) |
|---|---|
| bucketName | 이 스토리지 값이 속한 버킷. 관할권이 지정된 버킷은 버킷 이름 앞에 관할권 ↗︎과 밑줄을 포함해야 함. 예: eu_your-bucket-name |
| payloadSize | 버킷 안의 객체 크기. |
| metadataSize | 버킷 안의 객체 메타데이터 크기. |
| objectCount | 버킷 안의 객체 수. |
| uploadCount | 버킷 안의 보류 중인 멀티파트 업로드 수. |
| datetime | 이 스토리지 값이 나타내는 시각. |
Bandwidth 데이터셋
이 데이터셋은 100 KiB보다 작은 대역폭 전송을 제외해요. 이 기준은 객체 크기가 아니라 전송 크기에 적용돼요.
다음 필드로 필터링할 수 있어요:
| 필드(Field) | 설명(Description) |
|---|---|
bucketName |
해당하는 경우 관할권 접두사를 포함한 R2 버킷 식별자. |
date |
하루의 시작으로 절사(truncate)된 전송 타임스탬프. |
datetimeHour |
시간의 시작으로 절사된 전송 타임스탬프. |
datetimeFifteenMinutes |
가장 가까운 15분 단위로 반올림(내림)된 전송 타임스탬프. |
datetimeFiveMinutes |
5분 간격의 시작으로 절사된 전송 타임스탬프. |
datetimeMinute |
분의 시작으로 절사된 전송 타임스탬프. |
datetime |
원본(raw) 전송 타임스탬프. |
다음 필드는 합산(sum)할 수 있어요:
| 필드(Field) | 설명(Description) |
|---|---|
bytesDownload |
다운로드된 바이트. |
bytesUpload |
업로드된 바이트. |
대시보드로 보기 (View via the dashboard)
R2의 버킷별 분석은 Cloudflare 대시보드에서 확인할 수 있어요. 버킷의 현재·과거 메트릭을 보려면:
- Cloudflare 대시보드에서 R2 object storage 페이지로 이동하세요. Go to Overview ↗
- 버킷을 선택하세요.
- Metrics 탭을 선택하세요.
조회할 시간 창을 선택할 수도 있어요. 기본값은 최근 24시간이에요.
GraphQL API로 조회하기 (Query via the GraphQL API)
GraphQL Analytics API를 통해 R2 버킷의 분석을 프로그래밍 방식으로 조회할 수 있어요. 이 API는 Cloudflare 대시보드와 동일한 데이터셋을 조회하며, GraphQL introspection을 지원해요.
예시 (Examples)
Operations
주어진 기간 동안 버킷의 각 작업 유형별 볼륨을 조회하려면 다음과 같은 쿼리를 실행하면 돼요:
query R2VolumeExample(
$accountTag: string!
$startDate: Time
$endDate: Time
$bucketName: string
) {
viewer {
accounts(filter: { accountTag: $accountTag }) {
r2OperationsAdaptiveGroups(
limit: 10000
filter: {
datetime_geq: $startDate
datetime_leq: $endDate
bucketName: $bucketName
}
) {
sum {
requests
}
dimensions {
actionType
}
}
}
}
}
bucketName 필드를 제거하면 작업에 대한 계정 수준 개요를 얻을 수 있어요. 쿼리에 더 많은 차원(dimensions)을 추가하면 작업 볼륨을 더 세분화할 수도 있어요.
Storage
주어진 기간 동안 버킷의 스토리지를 조회하려면 다음과 같은 쿼리를 실행하면 돼요:
query R2StorageExample(
$accountTag: string!
$startDate: Time
$endDate: Time
$bucketName: string
) {
viewer {
accounts(filter: { accountTag: $accountTag }) {
r2StorageAdaptiveGroups(
limit: 10000
filter: {
datetime_geq: $startDate
datetime_leq: $endDate
bucketName: $bucketName
}
orderBy: [datetime_DESC]
) {
max {
objectCount
uploadCount
payloadSize
metadataSize
}
dimensions {
datetime
}
}
}
}
}
Bandwidth
버킷의 시간별 업로드·다운로드를 조회해요. 결과는 전송률이 아닌 바이트 합계이며, 100 KiB보다 작은 전송은 제외돼요:
query R2BandwidthExample(
$accountTag: string!
$startDate: Time!
$endDate: Time!
$bucketName: string!
) {
viewer {
accounts(filter: { accountTag: $accountTag }) {
r2BandwidthUsageAdaptiveGroups(
limit: 1000
filter: {
datetime_geq: $startDate
datetime_lt: $endDate
bucketName: $bucketName
}
orderBy: [datetimeHour_ASC]
) {
sum {
bytesUpload
bytesDownload
}
dimensions {
datetimeHour
}
}
}
}
}