Clientseitige Legacy-Messwerte

Auf dieser Seite wird eine Reihe von clientseitigen Messwerten beschrieben, die durch integrierte clientseitige Messwerte ersetzt wurden. Diese Seite dient als Referenz für alle Entwickler, die noch die Legacy-Messwerte verwenden.

Wir empfehlen die Verwendung der integrierten clientseitigen Messwerte, die in der Übersicht über clientseitige Messwerte beschrieben werden, anstelle der auf dieser Seite beschriebenen Legacy-Messwerte.

Messwerte aktivieren

Diese Informationen werden für Kunden bereitgestellt, die die alten Messwerte verwenden. Informationen zum Aktivieren der neueren, integrierten clientseitigen Messwerte finden Sie unter Clientseitige Messwerte einrichten.

Der Cloud Bigtable HBase-Client für Java verwendet Dropwizard Metrics, um clientseitige Messwerte zu erfassen und in Berichten zusammenzustellen. Da das Erfassen von Messwerten die Latenz bei jeder Abfrage leicht erhöhen kann (im einstelligen Mikrosekundenbereich), waren Messwerte nicht standardmäßig aktiviert. Im folgenden Abschnitt wird erklärt, wie Sie die alten clientseitigen Messwerte aktivieren.

Log4j-Reporter verwenden

Die einfachste Möglichkeit, die clientseitigen Messwerte zu aktivieren, besteht darin, Ihrer Konfigurationsdatei Log4j die folgende Zeile hinzuzufügen:

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

Diese Konfigurationseinstellung aktiviert die Erfassung von Messwerten und protokolliert die Bigtable-Messwerte mit einem SLF4J-Logger.

Andere Reporter verwenden

Sie können andere Arten von Reportern verwenden, wenn Sie den Code Ihrer Anwendung aktualisieren. Folgendes ist zum Beispiel ein Reporter, der Messwerte an einen Graphite-Server sendet:

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);

Drop Wizard Metrics bietet Reporter für JMX, Konsolen-Logging, SLF4J und CSV. Außerdem gibt es eine Reihe von Drittanbieter-Reportern.

Verfügbare Messwerte

In diesem Abschnitt werden die Messwerte beschrieben, die verfügbar sind, wenn die Legacy-HBase-Messwerte auf Clientseite aktiviert sind. Jeder Messwert entspricht einem der folgenden Typen:

  • Zähler: Ein kumulativer Zähler per Java Virtual Machine (JVM).
  • Meter: Informationen über Zahlen und Durchsatz (Zählung der letzten Minute, 5 Minuten oder 15 Minuten)
  • Timer: Messinformationen sowie Informationen zur Latenz (wie Median, Mittelwert und 95. Perzentil)

Bei jedem Anfragetyp werden nur bestimmte Messwerte erfasst. Ein Beispiel für die bei einer Put-Anfrage erfassten Messwerte finden Sie unter Beispiel: Messwerte bei einer Put-Anfrage.

Messwerte auf Kanalebene

Typ Name Beschreibung
Zähler google-cloud-bigtable.sessions.active Die Anzahl der geöffneten BigtableSessions. Jede HBase-Connection hat eine einzelne BigtableSession.
Zähler google-cloud-bigtable.grpc.channel.active Die Anzahl der nachrangigen gRPC/Netty-Kanäle. Jede BigtableSession hat viele gRPC-Kanäle.

Allgemeine RPC-Messwerte

Typ Name Beschreibung
Zähler google-cloud-bigtable.grpc.rpc.active Die Anzahl an Remote-Prozedur-Aufrufen (RPCs), die derzeit aktiv sind.
Meter google-cloud-bigtable.grpc.rpc.performed RPC-Durchsatz.

Datenmethoden-Messwerte

Datenmethoden-Messwerte werden für die folgenden Datenmethoden erfasst:

  • ReadRows: Implementiert "Gets" und "Scans".
  • MutateRow: Implementiert "Puts" und "Deletes".
  • MutateRows: Implementiert Bulk-Schreibvorgänge.
  • CheckAndMutateRow: Implementiert die checkAnd*-Methoden von HBase.
  • ReadModifyWrite: Implementiert die Methoden Append und Increment von HBase.
  • SampleRowKeys: Ruft Informationen zu Regionen ab, die für MapReduce-Vorgänge verwendet werden.
Typ Name Beschreibung
Timer google-cloud-bigtable.grpc.method.[METHOD_TYPE].operation.latency Die Zeit, die für einzelne Vorgänge benötigt wird. Vorgänge beinhalten die gesamte Latenz aller RPCs, die durchgeführt werden. (Gewöhnlich wird nur ein RPC durchgeführt. Neuversuche auf der Clientseite können dazu führen, dass der gleiche RPC mehr als einmal ausgeführt wird, wenn ein vorübergehender Fehler besteht.)
Timer google-cloud-bigtable.grpc.method.ReadRows.firstResponse.latency Die Zeitdauer bis zum Erhalt der ersten Antwort auf eine Scan-Anfrage.
Meter google-cloud-bigtable.grpc.method.[METHOD_TYPE].retries.performed Die Anzahl der durchgeführten Neuversuche.
Meter google-cloud-bigtable.grpc.method.[METHOD_TYPE].failures Die Anzahl an nicht neu versuchbaren Fehlschlägen.
Meter google-cloud-bigtable.grpc.method.[METHOD_TYPE].retries.exhausted Die Anzahl abgebrochener Neuversuche wegen zu vieler vorher fehlgeschlagener Neuversuche.

Bulk-Messwerte

Bulk-Messwerte werden für Methoden zur Verfügung gestellt, die mehrere Antworten zurückgeben, beispielsweise Bulk-Schreibvorgänge.

Typ Name Beschreibung
Meter google-cloud-bigtable.scanner.results Der Durchsatz an individuellen Zeilen, die von einem Scan zurückgegeben werden.
Meter google-cloud-bigtable.bulk-mutator.mutations.added Der Durchsatz an individuellen Mutationen, die für jede MutateRows-Anfrage hinzugefügt werden.
Meter google-cloud-bigtable.bulk-mutator.mutations.retried Die Anzahl an individuellen Mutationen im Laufe der Zeit

Bigtable Tabellen-Messwerte

Die Umwandlung von Bigtable-Objekten in HBase-Objekte kann die Latenz einer Anfrage erhöhen. Die folgenden Timer können mit den angegebenen *.operation.latency-Timern korreliert werden, um die Kosten der Umwandlung zu messen.

Typ Name Beschreibung
Timer google-cloud-bigtable.table.put.latency Die Zeitdauer, die ein individueller Put-Vorgang erfordert. Korreliert mit google-cloud-bigtable.grpc.method.MutateRow.operation.latency.
Timer google-cloud-bigtable.table.get.latency Die Zeitdauer, die ein individueller Get-Vorgang erfordert. Korreliert mit google-cloud-bigtable.grpc.method.ReadRows.operation.latency.

Beispiel: Messwerte bei einer Put-Anfrage

Wenn clientseitige Messwerte aktiviert sind, werden bei einer erfolgreichen PutPut-Anfrage, die nicht wiederholt wird, die folgenden Messwerte erfasst:

  • Zähler: google-cloud-bigtable.grpc.rpc.active
  • Anzeige: google-cloud-bigtable.grpc.rpc.performed
  • Timer: google-cloud-bigtable.grpc.method.MutateRow.operation.latency
  • Timer: google-cloud-bigtable.table.put.latency

Durch das Erfassen dieser Messwerte dauert der Put-Vorgang ungefähr 1 Mikrosekunde (1/1000 einer Millisekunde) länger. Der gesamte Put-Vorgang kann in zwei bis drei Millisekunden abgeschlossen werden, vorausgesetzt, er umfasst ungefähr 1 KB Daten.