Datastore 모드의 Firestore에서 성능 모니터링 이해

Cloud Monitoring은 Google Cloud 제품에서 측정항목, 이벤트, 메타데이터를 수집합니다. Cloud Monitoring을 사용하여 맞춤 대시보드와 사용량 알림을 설정할 수도 있습니다.

이 문서에서는 측정항목 사용, 커스텀 측정항목 대시보드에 대해 알아보고 알림을 설정하는 방법을 안내합니다.

모니터링 리소스

Cloud Monitoring의 모니터링 리소스는 가상 머신, 데이터베이스, 애플리케이션과 같은 논리적 또는 물리적 항목을 나타냅니다. 모니터링되는 리소스에는 대시보드를 통해 탐색하거나 보고하거나 알림을 만드는 데 사용할 수 있는 고유한 측정항목 세트가 포함되어 있습니다. 각 리소스에는 리소스에 관한 추가 정보를 보유하는 키-값 쌍인 리소스 라벨도 있습니다. 리소스 라벨은 리소스와 연결된 모든 측정항목에 사용할 수 있습니다.

Cloud Monitoring API를 사용하여 Datastore 모드의 Firestore 성능은 다음 리소스로 모니터링됩니다.

리소스 Description(설명) 지원되는 데이터베이스 모드
firestore.googleapis.com/Database(권장) project, location*, database_id에 대한 분석을 제공하는 모니터링 리소스 유형입니다 . 특정 이름 없이 생성된 데이터베이스의 경우 database_id 라벨은 (default)가 됩니다. 두 모드에서 모두 지원되는 모든 측정항목(Datastore 모드의 Firestore에서 지원되지 않는 다음 측정항목 제외)
  • document/delete_ops_count
  • document/read_ops_count
  • document/write_ops_count
datastore_request Datastore 프로젝트의 모니터링 리소스 유형이며 데이터베이스에 대한 분석을 제공하지 않습니다.

측정항목

Firestore는 Firestore Native와 Datastore 모드의 Firestore 두 가지 모드로 제공됩니다. 이 두 모드 간의 기능 비교는 데이터베이스 모드 중 선택을 참고하세요.

Datastore 모드의 Firestore 전체 측정항목 목록은 Datastore 모드의 Firestore 측정항목을 참조하세요.

서비스 런타임 측정항목

serviceruntime 측정항목은 프로젝트의 트래픽에 대한 대략적인 개요를 제공합니다. 이러한 측정항목은 대부분의 Google Cloud API에서 사용할 수 있습니다. consumed_api 모니터링 리소스 유형에는 이러한 공통 측정항목이 포함됩니다. 이 측정항목은 30분마다 샘플링되므로 데이터가 평활화됩니다.

serviceruntime 측정항목의 중요한 리소스 라벨은 method입니다. 이 라벨은 호출된 기본 RPC 메서드를 나타냅니다. 호출하는 SDK 메서드의 이름은 기본 RPC 메서드와 동일하지 않을 수 있습니다. SDK가 상위 수준의 API 추상화를 제공하기 때문입니다. 그러나 애플리케이션이 Firestore와 상호작용하는 방식을 이해하려면 RPC 메서드의 이름을 기반으로 측정항목을 이해하는 것이 중요합니다.

특정 SDK 메서드의 기본 RPC 메서드가 무엇인지 알아야 하는 경우 API 문서를 참고하세요.

api/request_count

이 측정항목은 프로토콜(http, gRPC 등의 요청 프로토콜), 응답 코드(HTTP 응답 코드), response_code_class(2xx, 4xx 등 응답 코드 클래스), grpc_status_code(숫자 gRPC 응답 코드) 전반에서 완료된 요청 수 및 grpc_status_code(숫자 gRPC 응답 코드)를 제공합니다. 이 측정항목을 사용하여 전반적인 API 요청을 관찰하고 오류율을 계산합니다.

2xx 코드를 반환하는 api/request_count 측정항목
그림 1. api/request_count 측정항목(확대하려면 클릭)

그림 1에서는 서비스 및 메서드별로 그룹화된 2xx 코드를 반환하는 요청을 볼 수 있습니다. 2xx 코드는 요청이 성공했음을 나타내는 HTTP 상태 코드입니다.

2xx 코드를 반환하는 api/request_count 측정항목
그림 2. 2xx 코드를 반환하는 api/request_count 측정항목(확대하려면 클릭).

그림 2에서는 response_code로 그룹화된 커밋을 볼 수 있습니다. 이 예시에서는 데이터베이스가 정상임을 나타내는 HTTP 200 응답만 표시됩니다.

다음 서비스 런타임 측정항목을 사용하여 데이터베이스를 모니터링하세요.

datastore_request 리소스 유형의 api/request_count

api/request_count 측정항목은 api_methodresponse_code 분류가 있는 datastore_request 리소스 유형에서도 사용할 수 있습니다. 대신 이 측정항목을 사용하면 급증을 포착하는 데 도움이 되는 더 세부적인 샘플링 기간을 활용할 수 있습니다.

datastore_request 리소스의 api/request_count 측정항목
그림 3. datastore_request 리소스 아래의 api/request_count 측정항목(확대하려면 클릭).
api/request_latencies

api/request_latencies 측정항목은 완료된 모든 요청에 대한 지연 시간 분포를 제공합니다.

Firestore는 Firestore 서비스 구성요소의 측정항목을 기록합니다. 지연 시간 측정항목에는 Firestore가 요청을 받는 시점부터 스토리지 레이어와의 상호작용을 포함하여 Firestore가 응답 전송을 완료하는 시점까지의 시간이 포함됩니다. 따라서 클라이언트와 Firestore 서비스 간의 왕복 지연 시간(rtt)은 이러한 측정항목에 포함되지 않습니다.

지연 시간 분포를 계산하는 api/request_latencies
그림 4. 지연 시간 분포를 계산하는 api/request_latencies
api/request_sizes 및 api/response_sizes

api/request_sizesapi/response_sizes 측정항목은 각각 페이로드 크기(바이트)에 대한 유용한 정보를 제공합니다. 이는 대량의 데이터를 전송하는 쓰기 워크로드를 이해하거나, 범위가 너무 넓어 대규모 페이로드를 반환하는 쿼리를 이해하는 데 유용할 수 있습니다.

api/request_sizes 및 api/response_sizes 측정항목
그림 5. api/request_sizes 및 api/response_sizes 측정항목(확대하려면 클릭)

그림 5에는 RunQuery 메서드의 응답 크기에 관한 히트맵이 표시됩니다. 크기가 안정적이고 중앙값이 50바이트이며 전체적으로 10바이트~100바이트 사이임을 알 수 있습니다. 페이로드 크기는 항상 전송 제어 오버헤드를 제외하고 비압축 바이트 단위로 측정됩니다.

항목 작업 측정항목

이 측정항목은 Firestore 데이터베이스에 대한 읽기 (조회 및 쿼리) 및 쓰기의 페이로드 크기를 바이트 단위로 분포합니다. 값은 페이로드의 총크기를 나타냅니다. 예를 들어 쿼리에서 반환된 모든 결과가 여기에 해당합니다. 이러한 측정항목은 api/request_sizesapi/response_sizes 측정항목과 비슷하지만, 항목 작업 측정항목이 더 세분화된 샘플링을 제공하지만 덜 세분화된 분류를 제공한다는 주요 차이점이 있습니다.

예를 들어 항목 작업 측정항목은 모니터링된 datastore_request 리소스를 사용하므로 서비스 또는 메서드 분류가 없습니다.

  • entity/read_sizes: 유형별로 그룹화된 읽은 항목의 크기 분포입니다.
  • entity/write_sizes: 작업으로 그룹화된 작성된 항목의 크기 분포입니다.

색인 측정항목

색인 팬아웃 비율을 이해하기 위해 색인 쓰기 속도를 document/write_ops_count 측정항목과 대조할 수 있습니다.

  • index/write_count: 색인 쓰기 수입니다.
색인 쓰기 속도와 문서 쓰기 속도 비교
그림 7. 문서 쓰기 속도와 대조되는 색인 쓰기 속도(확대하려면 클릭)

그림 7에서는 색인 쓰기 속도를 문서 쓰기 속도와 비교하는 방법을 확인할 수 있습니다. 이 예시에는 모든 문서 쓰기에 약 6개의 색인 쓰기가 있으며, 이는 비교적 낮은 색인 팬아웃 속도입니다.

TTL 측정항목

TTL 측정항목은 Firestore Native와 Datastore 모드의 Firestore 데이터베이스 모두에서 사용할 수 있습니다. 이러한 측정항목을 사용하여 적용된 TTL 정책의 효과를 모니터링합니다.

  • entity/ttl_deletion_count: TTL 서비스에 의해 삭제된 총 항목 수입니다.
  • entity/ttl_expiration_to_deletion_delays: TTL이 있는 항목이 만료된 시점과 실제로 삭제된 시점 사이에 경과한 시간입니다.

    TTL 삭제 지연이 24시간 이상 지속되는 경우 지원팀에 문의하세요.

다음 단계