클라이언트 측 측정항목 보고

자바용 Cloud Bigtable HBase 클라이언트는 Bigtable의 성능 모니터링을 위한 클라이언트 측 측정항목을 수집할 수 있습니다. 다른 Bigtable 클라이언트 라이브러리는 클라이언트 측 측정항목을 제공하지 않습니다. 이 페이지에서는 자바용 HBase 클라언트에서 클라이언트 측 측정항목을 사용 설정하는 방법을 설명하고 사용 가능한 측정항목을 안내합니다.

측정항목 사용 설정하기

자바용 Cloud Bigtable HBase 클라이언트는 Dropwizard 측정항목을 사용하여 클라이언트 측 측정항목을 수집하고 보고합니다. 측정항목을 수집하면 각 요청에 매우 짧은 지연 시간(10마이크로초 미만)이 추가될 수 있기 때문에 측정항목은 기본적으로 사용 설정되지 않습니다. 다음 섹션에서는 클라이언트 측 측정항목을 사용 설정하는 방법을 설명합니다.

Log4j 보고자 사용하기

측정항목을 사용설정하는 가장 간단한 방법은 Log4j 구성 파일에 다음 줄을 추가하는 것입니다.

log4j.category.com.google.cloud.bigtable.metrics=DEBUG

이 구성 설정은 측정항목 수집을 활성화하고 SLF4J 로거로 Bigtable 측정항목을 로깅합니다.

다른 보고자 사용하기

애플리케이션의 코드를 업데이트하여 다른 유형의 보고자를 사용할 수 있습니다. 예를 들어, 다음은 Graphite 서버에 측정항목을 보내는 보고자입니다.

Graphite pickledGraphite = new PickledGraphite(new InetSocketAddress("graphite.example.com", 2004));
DropwizardMetricRegistry registry = new DropwizardMetricRegistry();
GraphiteReporter reporter =
    GraphiteReporter.forRegistry(registry.getRegistry())
        .convertRatesTo(TimeUnit.SECONDS)
        .convertDurationsTo(TimeUnit.MILLISECONDS)
        .filter(MetricFilter.ALL)
        .build(pickledGraphite);
reporter.start(1, TimeUnit.MINUTES);
BigtableClientMetrics.setMetricRegistry(registry);

Dropwizard 측정항목은 JMX, 콘솔 로깅, SLF4J, CSV용 보고자를 제공합니다. 다양한 타사 보고자를 사용할 수도 있습니다.

사용 가능한 측정항목

이 섹션에서는 클라이언트 측 측정항목을 사용 설정하면 사용할 수 있는 측정항목을 설명합니다. 각 측정항목은 다음 유형 중 하나입니다.

  • 카운터: Java 가상 머신(JVM)당 누적 개수입니다.
  • 측정기: 개수 정보와 처리량 정보를 더한 값입니다(마지막 1분, 5분, 15분당 개수).
  • 타이머: 측정기 정보와 지연 시간 정보를 더한 값입니다(중앙값, 평균, 95번째 백분위수).

각 요청 유형에 대해 특정 측정항목만 수집됩니다. Put 요청 중에 수집되는 측정항목의 예는 '예: Put 요청의 측정항목'을 참조하세요.

채널 수준 측정항목

유형 이름 설명
카운터 google-cloud-bigtable.sessions.active 열려 있는 BigtableSession 수입니다. 각 HBase Connection에는 단일 BigtableSession이 있습니다.
카운터 google-cloud-bigtable.grpc.channel.active 열려 있는 하위 수준 gRPC/Netty 채널 수입니다. 각 BigtableSession에는 많은 gRPC 채널이 있습니다.

일반 RPC 측정항목

유형 이름 설명
카운터 google-cloud-bigtable.grpc.rpc.active 현재 활성 상태인 리모트 프로시져 콜(RPC) 수입니다.
측정기 google-cloud-bigtable.grpc.rpc.performed RPC 처리량입니다.

데이터 메소드 측정항목

다음 데이터 메소드에 대해 데이터 메소드 측정항목이 수집됩니다.

  • ReadRows: 가져오기 및 검사를 구현합니다.
  • MutateRow: 입력 및 삭제를 구현합니다.
  • MutateRows: 일괄 쓰기를 구현합니다.
  • CheckAndMutateRow: HBase의 checkAnd* 메서드를 구현합니다.
  • ReadModifyWrite: HBase의 AppendIncrement 메서드를 구현합니다.
  • SampleRowKeys: 맵리듀스 작업에 사용되는 리전 정보를 검색합니다.
유형 이름 설명
타이머 google-cloud-bigtable.grpc.method.[METHOD_TYPE].operation.latency 개별 작업에 걸리는 시간입니다. 작업에는 수행되는 모든 RPC의 총 지연 시간이 포함됩니다. 대개 한 RPC만 수행됩니다. 일시적 오류가 있는 경우 클라이언트 측에서 재시도하기 때문에 동일한 RPC가 여러 번 수행될 수 있습니다.
타이머 google-cloud-bigtable.grpc.method.ReadRows.firstResponse.latency 검색 요청에 대한 첫 번째 응답을 받는 데 걸리는 시간입니다.
측정기 google-cloud-bigtable.grpc.method.[METHOD_TYPE].retries.performed 수행된 재시도 횟수입니다.
측정기 google-cloud-bigtable.grpc.method.[METHOD_TYPE].failures 재시도할 수 없는 오류 수입니다.
측정기 google-cloud-bigtable.grpc.method.[METHOD_TYPE].retries.exhausted 재시도가 너무 많이 실패하여 재시도가 취소된 횟수입니다.

일괄 측정항목

일괄 측정항목은 일괄 쓰기와 같이 둘 이상의 응답을 반환하는 메소드에 제공됩니다.

유형 이름 설명
측정기 google-cloud-bigtable.scanner.results Scan에서 반환하는 개별 행의 처리량입니다.
측정기 google-cloud-bigtable.bulk-mutator.mutations.added MutateRows 요청에 추가된 개별 변형의 처리량입니다.
측정기 google-cloud-bigtable.bulk-mutator.mutations.retried 여러 시간에 걸쳐 재시도한 개별 변이 수입니다.

Bigtable 테이블 측정항목

CloudBigtable 객체를 HBase 객체로 변환하면 요청 지연 시간이 늘어날 수 있습니다. 다음 타이머를 지정된 *.operation.latency 타이머와 연결하여 전환 비용을 측정할 수 있습니다.

유형 이름 설명
타이머 google-cloud-bigtable.table.put.latency 개별 Put 작업에 걸리는 시간입니다. google-cloud-bigtable.grpc.method.MutateRow.operation.latency와 상관 관계가 있습니다.
타이머 google-cloud-bigtable.table.get.latency 개별 Get 작업에 걸리는 시간입니다. google-cloud-bigtable.grpc.method.ReadRows.operation.latency와 상관 관계가 있습니다.

예: Put 요청의 측정항목

클라이언트 측 측정항목이 사용 설정되면 재시도되지 않은 성공적인 Put 요청에 대해 다음 측정항목이 수집됩니다.

  • Counter: google-cloud-bigtable.grpc.rpc.active
  • Meter: google-cloud-bigtable.grpc.rpc.performed
  • Timer: google-cloud-bigtable.grpc.method.MutateRow.operation.latency
  • Timer: google-cloud-bigtable.table.put.latency

이러한 측정항목을 수집하면 약 1마이크로초(1/1000 밀리초)가 Put 작업에 추가됩니다. 작업에 약 1KB의 데이터가 포함되어 있다고 가정할 때 전체 Put 작업에 2~3밀리초가 걸릴 수 있습니다.