gRPC 클라이언트 측 측정항목 사용

이 페이지에서는 지원되는 다음 인터페이스 중 하나를 사용해서 Cloud Storage와 상호작용하기 위해 gRPC를 사용할 때 gRPC 클라이언트 측 측정항목을 Cloud Monitoring으로 보내는 방법을 설명합니다.

클라이언트 측 측정항목을 사용하면 gRPC를 사용하여 Cloud Storage와 상호작용하는 클라이언트 애플리케이션의 성능을 모니터링할 수 있습니다. 클라이언트 측 측정항목은 서버 측 관점에서 Cloud Storage 성능에 대한 인사이트를 제공하는 서버 측 측정항목과 다릅니다.

작동 방식

gRPC를 통해 지원되는 인터페이스 중 하나를 사용하여 Cloud Storage와 상호작용할 때는 클라이언트 측 측정항목을 Cloud Monitoring으로 보내도록 선택할 수 있습니다. 측정항목 탐색기를 사용해서 클라이언트 측 측정항목을 확인하면 Cloud Storage와 gRPC 클라이언트 사이의 상호작용을 모니터링 및 최적화하고, 사용량을 관리하고, 성능 병목 현상과 기술적 문제를 해결하는 데 도움이 됩니다.

가격 책정

Cloud Storage 클라이언트 측 측정항목은 비용이 청구되지 않습니다. 즉, Cloud Storage 클라이언트 측 측정항목을 전송, 저장, 액세스해도 Cloud Monitoring 요금이 발생하지 않습니다. 가격 책정에 대한 자세한 내용은 Google Cloud Observability 가격 책정을 참조하세요.

시작하기 전에

클라이언트 측 측정항목을 사용하려면 먼저 다음 단계를 완료해야 합니다.

  1. 사용하려는 Cloud Storage 클라이언트 라이브러리 또는 커넥터가 gRPC를 지원하는지 확인합니다. gRPC를 지원하는 Cloud Storage 클라이언트 라이브러리와 커넥터는 다음과 같습니다.

  2. 인증을 설정합니다.

  3. Cloud Monitoring API를 사용 설정합니다.

  4. Cloud Storage API를 사용 설정합니다.

    Cloud Storage API로 이동

  5. 클라이언트 측 측정항목을 보내는 데 필요한 역할 및 권한을 설정합니다.

필요한 역할

gRPC 클라이언트 측 측정항목을 Cloud Monitoring으로 보내는 데 필요한 권한을 설정하려면 gRPC 클라이언트에 사용된 서비스 계정에 모니터링 측정항목 작성자(roles/monitoring.metricWriter) IAM 역할을 부여합니다.

이 사전 정의된 역할에는 gRPC 클라이언트 측 측정항목을 Cloud Monitoring에 보내는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필요한 권한 섹션을 참조하세요.

필요한 권한

  • monitoring.timeSeries.create

다른 커스텀 역할이나 사전 정의된 역할을 사용하여 이러한 권한을 얻을 수도 있습니다. 모니터링 측정항목 작성자 역할에 대한 자세한 내용은 roles/monitoring.metricWriter에 대한 IAM 문서를 참조하세요.

고려사항

측정항목 탐색기에서 측정항목 보기

다음 안내에 따라 측정항목 탐색기에서 Cloud Storage gRPC 클라이언트 측 측정항목을 확인합니다.

  1. Google Cloud 콘솔에서 측정항목 탐색기 페이지로 이동합니다.

    측정항목 탐색기로 이동

  2. 측정항목을 보려는 프로젝트를 선택합니다.

  3. 측정항목 드롭다운 메뉴에서 측정항목 선택을 클릭합니다.

  4. 리소스 또는 측정항목 이름으로 필터링 검색창에 storage.googleapis.com/Client를 입력하거나 측정항목 이름을 기준으로 적용하려는 측정항목을 검색하고 적용을 클릭합니다. 측정항목을 2개 이상 추가하려면 쿼리 추가를 클릭합니다.

    Cloud Storage가 프로젝트에 측정항목을 적용합니다. 다음 드롭다운 메뉴를 사용해서 측정항목을 필터링하거나 집계할 수 있습니다.

    • 지정된 기준에 따라 데이터의 하위 집합을 선택하고 보려면 필터 드롭다운 메뉴를 사용하세요.

    • 여러 데이터 포인트를 단일 값으로 결합하고 측정항목의 요약 뷰를 보려면 집계 드롭다운 메뉴를 사용하세요.

    게시된 측정항목을 확인하기 전에 최소 1분 이상 애플리케이션이 실행되도록 합니다.

대시보드를 사용해서 프로젝트에 추가된 측정항목을 보려면 대시보드 개요를 참조하세요.

측정항목 설명

다음 섹션에서는 gRPC 클라이언트 성능을 모니터링하는 데 사용할 수 있는 Cloud Storage 클라이언트 측 측정항목에 대해 설명합니다.

클라이언트 시도별 측정항목

다음 측정항목은 클라이언트가 서버와 통신하기 위해 수행하는 개별 시도에 대한 성능 데이터를 수집합니다. 클라이언트 시도별 측정항목은 재시도 동작 및 병목 현상을 측정하고 클라이언트와 서버 간의 통신을 최적화하는 데 도움이 됩니다.

전체 측정항목 설명 계측 유형 단위 속성
storage.googleapis.com/client/grpc/client/attempt/started Preview. 완료되지 않은 시도를 포함하여 시작된 총 RPC 시도 수입니다. 카운터 {attempt}
  • grpc.method: 패키지, 서비스, 메서드를 포함한 전체 gRPC 메서드 이름입니다.
  • grpc.target: gRPC 채널을 만들 때 사용된 표준화된 대상 URI입니다.
storage.googleapis.com/client/grpc/client/attempt/duration Preview. 하위 채널을 선택하는 데 걸리는 시간을 포함하여 RPC 시도를 완료하는 데 걸리는 엔드 투 엔드 시간입니다. 히스토그램 s
  • grpc.method: 패키지, 서비스, 메서드를 포함한 전체 gRPC 메서드 이름입니다.
  • grpc.target: gRPC 채널을 만들 때 사용된 표준화된 대상 URI입니다.
  • grpc.status: 수신된 gRPC 서버 상태 코드입니다(예: OK, CANCELLED, DEADLINE_EXCEEDED).
  • grpc.lb.locality: 트래픽이 전송되는 대상 지역입니다. weighted_target 정책으로부터 전달된 리졸버 속성으로 설정되거나 리졸버 속성이 설정되지 않았으면 빈 문자열로 설정됩니다.
storage.googleapis.com/client/grpc/client/attempt/sent_total_compressed_message_size Preview. RPC 호출별로 메타데이터를 제외하고 모든 요청 메시지에 전송되는 압축 후 암호화 없이 전송되는 총 바이트 수입니다. 여기에는 gRPC 또는 전송 프레이밍 바이트가 포함되지 않습니다. 히스토그램 By
  • grpc.method: 패키지, 서비스, 메서드를 포함한 전체 gRPC 메서드 이름입니다.
  • grpc.target: gRPC 채널을 만들 때 사용된 표준화된 대상 URI입니다.
  • grpc.status: 수신된 gRPC 서버 상태 코드입니다(예: OK, CANCELLED, DEADLINE_EXCEEDED).
  • grpc.lb.locality: 트래픽이 전송되는 대상 지역입니다. weighted_target 정책으로부터 전달된 리졸버 속성으로 설정되거나 리졸버 속성이 설정되지 않았으면 빈 문자열로 설정됩니다.
storage.googleapis.com/client/grpc/client/attempt/rcvd_total_compressed_message_size Preview. RPC 호출별로 메타데이터를 제외하고 모든 응답 메시지에 수신되는 압축 후 암호화 없이 수신되는 총 바이트 수입니다. 여기에는 gRPC 또는 전송 프레이밍 바이트가 포함되지 않습니다. 히스토그램 By
  • grpc.method: 패키지, 서비스, 메서드를 포함한 전체 gRPC 메서드 이름입니다.
  • grpc.target: gRPC 채널을 만들 때 사용된 표준화된 대상 URI입니다.
  • grpc.status: 수신된 gRPC 서버 상태 코드입니다(예: OK, CANCELLED, DEADLINE_EXCEEDED).
  • grpc.lb.locality: 트래픽이 전송되는 대상 지역입니다. weighted_target 정책으로부터 전달된 리졸버 속성으로 설정되거나 리졸버 속성이 설정되지 않았으면 빈 문자열로 설정됩니다.

클라이언트 시도별 계측에 대한 자세한 내용은 GitHub의 OpenTelemetry 측정항목 문서를 참조하세요.

클라이언트 호출별 측정항목

다음 측정항목은 서버에 대한 클라이언트 호출의 전체 수명 주기에 대해 집계된 보기를 제공합니다. 클라이언트 호출별 측정항목은 클라이언트 호출에 대한 상위 레벨의 데이터를 제공하고, 호출 패턴을 파악하기 위한 추적 측정항목을 제공하고, 오류 빈도를 확인하는 데 도움이 됩니다.

전체 측정항목 설명 계측 유형 단위 속성
storage.googleapis.com/client/grpc/client/call/duration Preview. gRPC 라이브러리가 애플리케이션 관점에서 RPC를 완료하는 데 걸리는 엔드 투 엔드 시간을 측정합니다. 히스토그램 s
  • grpc.method: 패키지, 서비스, 메서드를 포함한 전체 gRPC 메서드 이름입니다.
  • grpc.target: gRPC 채널을 만들 때 사용된 표준화된 대상 URI입니다.
  • grpc.status: 수신된 gRPC 서버 상태 코드입니다(예: OK, CANCELLED, DEADLINE_EXCEEDED).

클라이언트 호출별 계측에 대한 자세한 내용은 GitHub의 OpenTelemetry 측정항목 문서를 참조하세요.

요청 부하 감지 측정항목

다음 측정항목은 요청 부하 감지를 사용하는 클라이언트 애플리케이션의 효율성에 대한 인사이트를 제공합니다. 요청 부하 감지 측정항목은 서버 부하의 균형을 조정하고 리소스 사용률을 최적화하고 클라이언트 응답 시간을 개선하는 데 도움이 될 수 있습니다. 다음 측정항목은 직접 연결의 경우에만 제공됩니다.

전체 측정항목 설명 계측 유형 단위 속성
storage.googleapis.com/client/grpc/lb/rls/cache_entries Preview. 요청 부하 감지 캐시의 항목 수입니다. 게이지 {entry}
  • grpc.target: WRR이 사용된 gRPC 채널의 대상을 나타냅니다.
  • grpc.lb.rls.server_target: 요청 부하 감지 서버가 연결하는 대상 URI입니다.
  • grpc.lb.rls.instance_uuid: 개별 요청 부하 감지 클라이언트 인스턴스의 범용 고유 식별자(UUID)입니다. 이 값은 그 자체로 의미가 있지 않지만, 동일한 gRPC 채널에 여러 인스턴스가 있거나 동일한 대상에 대해 여러 채널이 있는 경우에 요청 부하 감지 클라이언트 인스턴스를 서로 구분하는 데 유용합니다.
storage.googleapis.com/client/grpc/lb/rls/cache_size Preview. 요청 부하 감지 캐시의 현재 크기입니다. 게이지 By
  • grpc.target: WRR이 사용된 gRPC 채널의 대상입니다.
  • grpc.lb.rls.server_target: 요청 부하 감지 서버가 연결하는 대상 URI입니다.
  • grpc.lb.rls.instance_uuid: 개별 요청 부하 감지 클라이언트 인스턴스의 UUID입니다. 이 값은 그 자체로 의미가 있지 않지만, 동일한 gRPC 채널에 여러 인스턴스가 있거나 동일한 대상에 대해 여러 채널이 있는 경우에 요청 부하 감지 클라이언트 인스턴스를 서로 구분하는 데 유용합니다.
storage.googleapis.com/client/grpc/lb/rls/default_target_picks Preview. 부하 분산기(LB)가 기본 대상을 선택한 횟수입니다. 카운터 {pick}
  • grpc.target: 요청 부하 감지가 사용된 gRPC 채널의 대상을 나타냅니다.
  • grpc.lb.rls.server_target: 연결할 요청 부하 감지 서버의 대상 URI입니다.
  • grpc.lb.rls.data_plane_target: 데이터 플레인 트래픽을 라우팅하기 위해 요청 부하 감지에 사용되는 대상 문자열입니다. 값은 특정 키에 대해 요청 부하 감지 서버에서 반환되거나 요청 부하 감지 구성의 기본 대상으로 구성됩니다.
  • grpc.lb.pick_result: LB 선택의 결과입니다(예: "complete", "fail", "drop").
storage.googleapis.com/client/grpc/lb/rls/target_picks Preview. 각 요청 부하 감지 대상에 전송되는 LB 선택 수입니다. 또한 기본 대상이 요청 부하 감지 서버에서 반환된 경우에는 캐시에서 대상으로 전송되는 RPC가 grpc.rls.default_target_picks가 아닌 이 측정항목에서 계산됩니다. 카운터 {pick}
  • grpc.target: 요청 부하 감지가 사용된 gRPC 채널의 대상입니다.
  • grpc.lb.rls.server_target: 연결할 요청 부하 감지 서버의 대상 URI입니다.
  • grpc.lb.rls.data_plane_target: 데이터 플레인 트래픽을 라우팅하기 위해 요청 부하 감지에 사용되는 대상 문자열입니다. 값은 특정 키에 대해 요청 부하 감지 서버에서 반환되거나 요청 부하 감지 구성의 기본 대상으로 구성됩니다.
  • grpc.lb.pick_result: LB 선택의 결과입니다(예: "complete", "fail", "drop").
storage.googleapis.com/client/grpc/lb/rls/failed_picks Preview. 실패한 요청 부하 감지 요청 또는 제한되는 요청 부하 감지 채널로 인해 실패한 LB 선택 수입니다. 카운터 {pick}
  • grpc.target: 요청 부하 감지가 사용된 gRPC 채널의 대상입니다.
  • grpc.lb.rls.server_target: 연결할 요청 부하 감지 서버의 대상 URI입니다.

xDiscovery 서비스 클라이언트 측정항목

다음 측정항목은 백엔드 서비스에 대한 연결을 검색하고 구성하기 위해 클라이언트 애플리케이션이 xDiscovery 서비스(xDS) 컨트롤 플레인과 상호작용하는 방법에 대한 인사이트를 제공합니다. xDS 측정항목은 서비스 요청 지연 시간을 추적하고, 구성 업데이트를 모니터링하고, 전체 xDS 성능을 최적화하는 데 도움이 될 수 있습니다.

다음 측정항목은 직접 연결의 경우에만 제공됩니다.

전체 측정항목 설명 계측 유형 단위 속성
storage.googleapis.com/client/grpc/xds_client/connected Preview. xDS 클라이언트에 xDS 서버에 대해 작동 중인 ADS 스트림이 있는지 여부를 측정합니다. 특정 서버에서 이 측정항목은 스트림이 처음에 생성되었을 때 1에 전송됩니다. 연결 오류가 있거나 A57에 정의된 대로 응답 메시지 없이 ADS 스트림이 실패하면 측정항목이 0으로 설정됩니다. 0으로 설정하면 ADS 스트림에서 첫 번째 응답이 수신되면 측정항목이 1로 재설정됩니다. 이 측정항목은 C++용 Cloud 클라이언트 라이브러리에만 제공됩니다. 게이지 {bool}
  • grpc.target: 클라이언트의 경우 XdsClient가 사용된 gRPC 채널의 대상을 나타냅니다. 서버의 경우 "#server" 문자열입니다.
  • grpc.xds.server: XdsClient가 통신하는 xDS 서버의 대상 URI입니다.
storage.googleapis.com/client/grpc/xds_client/resource_updates_invalid Preview. 잘못된 것으로 간주되어 수신된 리소스 수입니다. 이 측정항목은 C++용 Cloud 클라이언트 라이브러리에만 제공됩니다. 카운터 {resource}
  • grpc.target: 클라이언트의 경우 XdsClient가 사용된 gRPC 채널의 대상을 나타냅니다. 서버의 경우 "#server" 문자열입니다.
  • grpc.xds.server: XdsClient가 통신하는 xDS 서버의 대상 URI입니다.
  • grpc.xds.resource_type: xDS 리소스 유형을 나타냅니다(예: "envoy.config.listener.v3.Listener").
storage.googleapis.com/client/grpc/xds_client/resource_updates_valid Preview. 변경되지 않았더라도 유효한 것으로 간주되어 수신된 리소스 수입니다. 이 측정항목은 C++용 Cloud 클라이언트 라이브러리에만 제공됩니다. 카운터 {resource}
  • grpc.target: 클라이언트의 경우 XdsClient가 사용된 gRPC 채널의 대상을 나타냅니다. 서버의 경우 "#server" 문자열입니다.
  • grpc.xds.server: XdsClient가 통신하는 xDS 서버의 대상 URI입니다.
  • grpc.xds.resource_type: xDS 리소스 유형을 나타냅니다(예: "envoy.config.listener.v3.Listener").
storage.googleapis.com/client/grpc/xds_client/resources Preview. xDS 리소스 수입니다. 이 측정항목은 C++용 Cloud 클라이언트 라이브러리에만 제공됩니다. 게이지 {resource}
  • grpc.target: 클라이언트의 경우 XdsClient가 사용된 gRPC 채널의 대상을 나타냅니다. 서버의 경우 "#server" 문자열입니다.
  • grpc.xds.authority: xDS 권한입니다. xdstp 리소스 이름 형식을 사용하지 않고 xdstp:// URI 표현이 도입되기 전에 xDS API에서 식별된 경우에는 값이 "#old"입니다.
  • grpc.xds.cache_state: xDS 리소스의 캐시 상태를 나타냅니다.
  • grpc.xds.resource_type: xDS 리소스 유형을 나타냅니다(예: "envoy.config.listener.v3.Listener").
storage.googleapis.com/client/grpc/xds_client/server_failure Preview. 더 이상 올바르게 작동하지 않고 사용 불가능 또는 과부하 상태로 되었거나 올바르지 않거나 유효하지 않은 구성 데이터를 제공하는 xDS 서버 수입니다. 이 측정항목은 C++용 Cloud 클라이언트 라이브러리에만 제공됩니다. 카운터 {failure}
  • grpc.target: XdsClient가 통신하는 xDS 서버의 대상 URI입니다.
  • grpc.xds.server: 클라이언트의 경우 XdsClient가 사용된 gRPC 채널의 대상을 나타냅니다. 서버의 경우 "#server" 문자열입니다.

xDS 클라이언트 측정항목에 대한 자세한 내용은 GitHub에서 xDS 기반 전역 부하 분산 문서를 참조하세요.

클라이언트 측 측정항목 선택 해제

필요한 경우 클라이언트 측 측정항목을 선택 해제할 수 있습니다.

Java

public GrpcStorageOptions.Builder setEnableGrpcClientMetrics(false enableGrpcClientMetrics)

자세한 내용은 Java용 Cloud 클라이언트 라이브러리의 GrpcStorageOptions.Builder 클래스에 정의된 gRPC 클라이언트 측정항목 관련 메서드를 참조하세요.

C++

C++용 Cloud 클라이언트 라이브러리를 사용하여 gRPC API에 대한 클라이언트 측 측정항목을 선택 해제하려면 EnableGrpcMetricsOption 구조체를 참조하세요.

Bazel을 사용하여 애플리케이션을 빌드하고 클라이언트 측 측정항목을 사용 중지하려면 애플리케이션의 빌드 파일에서 enable_grpc_metrics 옵션을 false로 설정합니다.

다음 단계