Créer des rapports sur les métriques côté client

Le client Cloud Bigtable HBase pour Java peut collecter des métriques côté client qui vous permettent de surveiller les performances de Cloud Bigtable. Les autres bibliothèques clientes Cloud Bigtable ne fournissent pas de métriques côté client. Cette page explique comment activer les métriques côté client dans le client HBase pour Java, et répertorie les métriques disponibles.

Activer les métriques

Le client Cloud Bigtable HBase pour Java utilise Dropwizard Metrics pour collecter et consigner les métriques côté client. La collecte de métriques pouvant ajouter une faible latence (de l'ordre de quelques microsecondes) à chaque requête, les métriques ne sont pas activées par défaut. Les sections suivantes expliquent comment activer les métriques côté client.

Utiliser le reporter Log4j

Le moyen le plus simple d'activer les métriques consiste à ajouter la ligne suivante à votre fichier de configuration Log4j :

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

Ce paramètre de configuration active la collecte des métriques et enregistre les métriques Cloud Bigtable avec un enregistreur SLF4J.

Utiliser d'autres reporters

Vous pouvez utiliser d'autres types de reporters en mettant à jour le code de votre application. Par exemple, voici un reporter qui envoie des métriques à un serveur 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 Metrics fournit des reporters pour JMX, la journalisation de la console, SLF4J et CSV. Toute une variété de reporters tiers est également disponible.

Métriques disponibles

Cette section décrit les métriques disponibles lorsque les métriques côté client sont activées. Chaque métrique dispose de l'un des types suivants :

  • Compteur : nombre cumulé par machine virtuelle Java (JVM)
  • Outil de mesure : informations de comptage et de débit (comptage sur la dernière minute, les 5 dernières minutes ou les 15 dernières minutes)
  • Timer : informations sur l'outil de mesure et sur la latence (par exemple, médiane, moyenne et 95e centile)

Seules certaines métriques sont collectées pour chaque type de requête. Consultez la section Exemple : métriques pour une requête Put pour obtenir un exemple des métriques collectées au cours d'une requête Put.

Métriques au niveau du canal

Type Nom Description
Compteur google-cloud-bigtable.sessions.active Nombre de BigtableSession ouvertes. Chaque Connection HBase dispose d'une seule BigtableSession.
Compteur google-cloud-bigtable.grpc.channel.active Nombre de canaux gRPC/Netty de niveau inférieur ouverts. Chaque BigtableSession dispose de nombreux canaux gRPC.

Métriques générales RPC

Type Nom Description
Compteur google-cloud-bigtable.grpc.rpc.active Nombre d'appels de procédures à distance (RPC) actuellement actifs.
Outil de mesure google-cloud-bigtable.grpc.rpc.performed Débit RPC.

Métriques de méthode de données

Les métriques de méthode de données sont collectées pour les méthodes de données suivantes :

  • ReadRows : met en œuvre les "get" et les "scan".
  • MutateRow : met en œuvre les "put" et les "delete".
  • MutateRows : met en œuvre les écritures groupées.
  • CheckAndMutateRow : met en œuvre les méthodes HBase checkAnd*.
  • ReadModifyWrite : met en œuvre les méthodes HBase Append et Increment.
  • SampleRowKeys : récupère les informations de région utilisées pour les opérations de MapReduce.
Type Nom Description
Timer google-cloud-bigtable.grpc.method.[METHOD_TYPE].operation.latency Temps pris par chaque opération individuelle. Les opérations incluent la quantité totale de latence de tous les RPC exécutés. (Habituellement, un seul RPC est exécuté. Les nouvelles tentatives côté client peuvent entraîner l'exécution du même RPC plusieurs fois en cas d'erreur transitoire.)
Timer google-cloud-bigtable.grpc.method.ReadRows.firstResponse.latency Délai nécessaire pour recevoir la première réponse à une demande d'analyse.
Outil de mesure google-cloud-bigtable.grpc.method.[METHOD_TYPE].retries.performed Nombre de tentatives qui ont été effectuées.
Outil de mesure google-cloud-bigtable.grpc.method.[METHOD_TYPE].failures Nombre d'échecs qui ne peuvent pas faire l'objet d'une nouvelle tentative.
Outil de mesure google-cloud-bigtable.grpc.method.[METHOD_TYPE].retries.exhausted Nombre de tentatives infructueuses en raison d'un trop grand nombre d'échecs.

Métriques groupées

Des métriques groupées sont fournies pour les méthodes qui renvoient plus d'une réponse, telle qu'une écriture groupée.

Type Nom Description
Outil de mesure google-cloud-bigtable.scanner.results Débit des lignes individuelles affichées par une analyse.
Outil de mesure google-cloud-bigtable.bulk-mutator.mutations.added Débit des mutations individuelles ajoutées pour chaque requête MutateRows.
Outil de mesure google-cloud-bigtable.bulk-mutator.mutations.retried Nombre de mutations individuelles ayant fait l'objet d'une nouvelle tentative au fil du temps.

Métriques de table Cloud Bigtable

La conversion des objets Cloud Bigtable en objets HBase peut augmenter la latence d'une requête. Les timers suivants peuvent être mis en corrélation avec les timers *.operation.latency spécifiés pour mesurer le coût de la conversion.

Type Nom Description
Timer google-cloud-bigtable.table.put.latency Durée de chaque opération Put individuelle. Correspond à google-cloud-bigtable.grpc.method.MutateRow.operation.latency.
Timer google-cloud-bigtable.table.get.latency Durée de chaque opération Get individuelle. Correspond à google-cloud-bigtable.grpc.method.ReadRows.operation.latency.

Exemple : métriques pour une requête Put

Lorsque les métriques côté client sont activées, les métriques suivantes sont collectées pour une requête Put réussie qui ne fait pas l'objet d'une nouvelle tentative :

  • Compteur : google-cloud-bigtable.grpc.rpc.active
  • Outil de mesure : google-cloud-bigtable.grpc.rpc.performed
  • Timer : google-cloud-bigtable.grpc.method.MutateRow.operation.latency
  • Timer : google-cloud-bigtable.table.put.latency

La collecte de ces métriques ajoute environ une microseconde (1/1 000 de milliseconde) à l'opération Put. L'ensemble de l'opération Put peut ne durer que deux à trois millisecondes, en supposant que l'opération comporte environ 1 Ko de données.