Como relatar métricas do lado do cliente

As métricas do lado do cliente são coletadas por meio do cliente HBase do Cloud Bigtable para Java. Com essas métricas, é possível monitorar o desempenho do Cloud Bigtable. Outras bibliotecas de cliente do Cloud Bigtable não fornecem métricas do lado do cliente. Nesta página, explicamos como ativar as métricas do lado do cliente no cliente HBase para Java, além de listar as métricas disponíveis.

Como ativar métricas

O cliente HBase do Cloud Bigtable para Java usa Dropwizard Metrics para coletar e reportar métricas do lado do cliente. Como a coleta de métricas pode adicionar uma quantidade muito pequena de latência (microssegundos de um dígito) a cada solicitação, as métricas não são ativadas por padrão. As seções a seguir explicam como ativar métricas do lado do cliente.

Como usar o gerador de relatórios Log4j

A maneira mais simples de ativar métricas é adicionar a seguinte linha ao arquivo de configuração Log4j:

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

Essa definição de configuração ativa a coleta de métricas e registra métricas do Cloud Bigtable com um SLF4J logger.

Como usar outros geradores de relatórios

Você pode usar outros tipos de geradores de relatórios por meio da atualização do código do aplicativo. Por exemplo, veja um gerador de relatórios que envia métricas a um servidor 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);

São fornecidos pelos geradores de relatórios do Dropwizard Metrics para JMX, a geração de registros de console, SLF4J e CSV. Também estão disponíveis vários geradores de relatórios de terceiros.

Métricas disponíveis

Esta seção descreve as métricas disponíveis quando as métricas do lado do cliente estão ativadas. Cada métrica tem um dos seguintes tipos:

  • Contador: contagem cumulativa por máquina virtual Java (JVM, na sigla em inglês).
  • Medidor: informações de contagem mais informações de capacidade (uma contagem para o último minuto, 5 minutos ou 15 minutos).
  • Temporizador: informações do medidor mais dados de latência (como mediana, média e 95º percentil).

Somente determinadas métricas são coletadas para cada tipo de solicitação. Consulte "Exemplo: métricas de uma solicitação Put" para ver um exemplo das métricas coletadas durante uma solicitação Put.

Métricas de canal

Tipo Nome Descrição
Contador google-cloud-bigtable.sessions.active Quantos BigtableSessions são abertos. Cada Connection do HBase tem um único BigtableSession.
Contador google-cloud-bigtable.grpc.channel.active Quantos canais gRPC/Netty de baixo nível são abertos. Cada BigtableSession tem muitos canais gRPC.

Métricas de RPC gerais

Tipo Nome Descrição
Contador google-cloud-bigtable.grpc.rpc.active O número de chamadas de procedimento remoto (RPCs, na sigla em inglês) ativas no momento.
Medidor google-cloud-bigtable.grpc.rpc.performed Capacidade de RPC.

Métricas de método de dados

As métricas de método de dados são coletadas para os seguintes métodos de dados:

  • ReadRows: implementa recebimentos e verificações.
  • MutateRow: implementa inserções e exclusões.
  • MutateRows: implementa gravações em massa.
  • CheckAndMutateRow: implementa os métodos checkAnd* do HBase.
  • ReadModifyWrite: implementa os métodos Append e Increment do HBase.
  • SampleRowKeys: recupera informações de região usadas para operações de MapReduce.
Tipo Nome Descrição
Temporizador google-cloud-bigtable.grpc.method.[METHOD_TYPE].operation.latency O tempo que as operações individuais levam. As operações incluem a quantidade total de latência de todos os RPCs que são realizados. (Geralmente, apenas um RPC é realizado. Novas tentativas no lado do cliente podem fazer com que o mesmo RPC seja executado mais de uma vez se houver um erro temporário.)
Temporizador google-cloud-bigtable.grpc.method.ReadRows.firstResponse.latency O tempo necessário para receber a primeira resposta a uma solicitação de verificação.
Medidor google-cloud-bigtable.grpc.method.[METHOD_TYPE].retries.performed O número de novas tentativas que foram realizadas.
Medidor google-cloud-bigtable.grpc.method.[METHOD_TYPE].failures O número de falhas não repetidas.
Medidor google-cloud-bigtable.grpc.method.[METHOD_TYPE].retries.exhausted O número de vezes que a repetição foi cancelada porque muitas tentativas falharam.

Métricas em massa

Métricas em massa são fornecidas para métodos que retornam mais de uma resposta, como uma gravação em massa.

Tipo Nome Descrição
Medidor google-cloud-bigtable.scanner.results A capacidade de linhas individuais retornadas por uma verificação.
Medidor google-cloud-bigtable.bulk-mutator.mutations.added A capacidade de mutações individuais adicionadas para cada solicitação MutateRows.
Medidor google-cloud-bigtable.bulk-mutator.mutations.retried O número de mutações individuais repetidas ao longo do tempo.

Métricas de tabela do Cloud Bigtable

A conversão de objetos do Cloud Bigtable em objetos do HBase pode aumentar a latência de uma solicitação. Os timers a seguir podem ser correlacionados com os timers *.operation.latency especificados para avaliar o custo da conversão.

Tipo Nome Descrição
Temporizador google-cloud-bigtable.table.put.latency O tempo que as operações individuais Put levam. Correlaciona-se com google-cloud-bigtable.grpc.method.MutateRow.operation.latency.
Temporizador google-cloud-bigtable.table.get.latency O tempo que as operações individuais Get levam. Correlaciona-se com google-cloud-bigtable.grpc.method.ReadRows.operation.latency.

Exemplo: métricas para uma solicitação Put

Quando as métricas do lado do cliente estão ativadas, as seguintes métricas são coletadas para uma solicitação Put bem-sucedida que não é repetida:

  • Contador: google-cloud-bigtable.grpc.rpc.active
  • Medidor: google-cloud-bigtable.grpc.rpc.performed
  • Temporizador: google-cloud-bigtable.grpc.method.MutateRow.operation.latency
  • Temporizador: google-cloud-bigtable.table.put.latency

A coleta dessas métricas adiciona aproximadamente 1 microssegundo (1/1000 de milésimo de segundo) à operação Put. A operação Put geral pode ser de 2 a 3 milissegundos, supondo que a operação inclua cerca de 1 KB de dados.