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

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

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

기능 소개

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

가격 책정

Cloud Storage 클라이언트 측 측정항목은 요금이 청구되지 않습니다. 즉, Cloud Monitoring 요금이 발생하지 않고도 Cloud Storage 클라이언트 측 측정항목을 내보내고 저장하고 액세스할 수 있습니다. 가격 책정에 관한 자세한 내용은 Google Cloud Observability 가격 책정을 참고하세요.

시작하기 전에

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

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

  2. 인증 설정

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

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

    Cloud Storage API로 이동

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

필요한 역할

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

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

필수 권한

  • monitoring.timeSeries.create

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

고려사항

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

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

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

    측정항목 탐색기로 이동

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

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

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

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

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

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

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

대시보드를 사용하여 프로젝트에 추가한 측정항목을 보려면 대시보드 개요를 참고하세요.

측정항목 설명

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

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

다음 측정항목은 클라이언트가 서버와 통신하기 위해 시도한 개별 시도에 관한 성능 데이터를 수집합니다. 클라이언트별 시도 측정항목을 사용하면 재시도 동작, 병목 현상을 측정하고 클라이언트와 서버 간의 통신을 최적화할 수 있습니다.

전체 측정항목 설명 결제 수단 유형 단위 속성
storage.googleapis.com/client/grpc/client/attempt/started Preview. 완료되지 않은 RPC 시도를 포함하여 시작된 총 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:// URI 표현이 도입되기 전에 xDS API에서 식별된 xdstp가 아닌 리소스 이름의 경우 값은 "#old"입니다.
  • grpc.xds.cache_state: xDS 리소스의 캐시 상태를 나타냅니다.
  • grpc.xds.resource_type"envoy.config.listener.v3.Listener"과 같은 xDS 리소스 유형을 나타냅니다.
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 기반 글로벌 부하 분산 문서를 참고하세요.

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

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

자바

public GrpcStorageOptions.Builder setEnableGrpcClientMetrics(false enableGrpcClientMetrics)

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

C++

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

다음 단계