Leistungsmonitoring in Firestore im Datastore-Modus

Cloud Monitoring erfasst Messwerte, Ereignisse und Metadaten aus Google Cloud-Produkten. Mit Cloud Monitoring können Sie auch benutzerdefinierte Dashboards und Nutzungsbenachrichtigungen einrichten.

In diesem Dokument erfahren Sie, wie Sie Messwerte verwenden, das Dashboard für benutzerdefinierte Messwerte verwenden und Benachrichtigungen einrichten.

Überwachte Ressourcen

Eine überwachte Ressource in Cloud Monitoring stellt eine logische oder physische Entität wie eine virtuelle Maschine, eine Datenbank oder eine Anwendung dar. Überwachte Ressourcen enthalten einen einzigartigen Satz von Messwerten, die untersucht, über ein Dashboard gemeldet oder zum Erstellen von Benachrichtigungen verwendet werden können. Jede Ressource hat auch eine Reihe von Ressourcenlabels. Dabei handelt es sich um Schlüssel/Wert-Paare, die zusätzliche Informationen zur Ressource enthalten. Ressourcenlabels sind für alle Messwerte verfügbar, die mit der Ressource verknüpft sind.

Mit der Cloud Monitoring API wird die Leistung von Firestore im Datastore-Modus mit den folgenden Ressourcen überwacht:

Ressourcen Beschreibung Unterstützter Datenbankmodus
firestore.googleapis.com/Database (empfohlen) Ein überwachter Ressourcentyp mit Aufschlüsselungen für project, location* und database_id . Für Datenbanken, die ohne bestimmten Namen erstellt wurden, ist das Label database_id (default). Alle Messwerte, die für beide Modi unterstützt werden, mit Ausnahme der folgenden Messwerte, die für Firestore im Datastore-Modus nicht unterstützt werden:
  • document/delete_ops_count
  • document/read_ops_count
  • document/write_ops_count
datastore_request Überwachter Ressourcentyp für Datastore-Projekte und keine Aufschlüsselung für Datenbanken.

Messwerte

Firestore ist in zwei verschiedenen Modi verfügbar: Firestore-nativ und Firestore im Datastore-Modus. Einen Funktionsvergleich zwischen diesen beiden Modi finden Sie unter Zwischen Datenbankmodi auswählen.

Eine vollständige Liste der Messwerte für Firestore im Datastore-Modus finden Sie unter Messwerte von Firestore im Datastore-Modus.

Messwerte zur Dienstlaufzeit

Die Messwerte serviceruntime bieten einen allgemeinen Überblick über den Traffic eines Projekts. Diese Messwerte sind für die meisten Google Cloud APIs verfügbar. Der überwachte Ressourcentyp consumed_api enthält diese allgemeinen Messwerte. Diese Messwerte werden alle 30 Minuten erfasst, was zu einer Glättung der Daten führt.

Ein wichtiges Ressourcenlabel für die serviceruntime-Messwerte ist method. Dieses Label stellt die aufgerufene zugrunde liegende RPC-Methode dar. Die SDK-Methode, die Sie aufrufen, hat nicht unbedingt den gleichen Namen wie die zugrunde liegende RPC-Methode. Der Grund dafür ist, dass das SDK allgemeine API-Abstraktion bietet. Wenn Sie jedoch nachvollziehen möchten, wie Ihre Anwendung mit Firestore interagiert, ist es wichtig, die Messwerte anhand des Namens der RPC-Methode zu verstehen.

Informationen zur zugrunde liegenden RPC-Methode für eine bestimmte SDK-Methode finden Sie in der API-Dokumentation.

api/request_count

Dieser Messwert gibt die Anzahl der abgeschlossenen Anfragen an, protokollübergreifend(Anfrageprotokoll wie HTTP oder gRPC), Antwortcode (HTTP-Antwortcode), response_code_class (Antwortcodeklasse wie 2xx, 4xx usw.) und grpc_status_code (numerischer gRPC-Antwortcode). Verwenden Sie diesen Messwert, um die gesamte API-Anfrage zu beobachten und die Fehlerrate zu berechnen.

api/request_count-Messwert, der einen 2xx-Code zurückgibt.
Abbildung 1. Messwert „api/request_count“ (zum Vergrößern klicken)

In Abbildung 1 sind Anfragen zu sehen, die einen 2xx-Code zurückgeben, gruppiert nach Dienst und Methode. 2xx-Codes sind HTTP-Statuscodes, die anzeigen, dass die Anforderung erfolgreich war.

api/request_count-Messwert, der einen 2xx-Code zurückgibt.
Abbildung 2. Messwert „api/request_count“, der einen 2xx-Code zurückgibt (zum Vergrößern klicken)

In Abbildung 2 sind die nach response_code gruppierten Commits zu sehen. In diesem Beispiel sehen wir nur HTTP 200-Antworten, was darauf hindeutet, dass die Datenbank fehlerfrei ist.

Verwenden Sie die folgenden Messwerte zur Dienstlaufzeit, um Ihre Datenbank zu überwachen.

api/request_count im Ressourcentyp datastore_request

Der Messwert api/request_count ist auch unter dem Ressourcentyp datastore_request mit den Aufschlüsselungen api_method und response_code verfügbar. Verwenden Sie stattdessen diesen Messwert, um den detaillierteren Stichprobenzeitraum zu nutzen, mit dem Sie Spitzen besser erkennen können.

Messwert „api/request_count“ unter der Ressource „datastore_request“
Abbildung 3: Messwert „api/request_count“ unter der Ressource „datastore_request“ (zum Vergrößern klicken)
api/request_latencies

Der Messwert api/request_latencies gibt Latenzverteilungen für alle abgeschlossenen Anfragen an.

Firestore zeichnet Messwerte aus der Firestore-Dienstkomponente auf. Latenzmesswerte umfassen die Zeit, in der Firestore die Anfrage erhält, bis zu dem Zeitpunkt, zu dem Firestore die Antwort gesendet hat, einschließlich Interaktionen mit der Speicherebene. Aus diesem Grund ist die Umlauflatenz zwischen dem Client und dem Firestore-Dienst nicht in diesen Messwerten enthalten.

api/request_latencies zur Berechnung der Latenzverteilung
Abbildung 4. api/request_latencies zur Berechnung der Latenzverteilung.
api/request_sizes und api/response_sizes

Die Messwerte api/request_sizes und api/response_sizes geben jeweils Aufschluss über die Nutzlastgrößen (in Byte). Diese können nützlich sein, um Schreibarbeitslasten zu verstehen, die große Datenmengen senden oder zu breit gefasste Abfragen senden und große Nutzlasten zurückgeben.

Messwerte api/request_sizes und api/response_sizes
Abbildung 5. „api/request_sizes“ und „api/response_sizes“ (zum Vergrößern klicken).

In Abbildung 5 sehen Sie eine Heatmap für Antwortgrößen für die Methode RunQuery. Wir sehen, dass die Größe unverändert ist, der Medianwert von 50 Byte beträgt und insgesamt zwischen 10 und 100 Byte liegt. Die Nutzlastgrößen werden immer in unkomprimierten Byte gemessen, abzüglich des Aufwands für die Übertragungssteuerung.

Vorgangsmesswerte für Entitäten

Diese Messwerte liefern Verteilungen in Byte der Nutzlastgrößen für Lese- (Suchvorgänge und Abfragen) und Schreibvorgänge in eine Firestore-Datenbank. Die Werte geben die Gesamtgröße der Nutzlast an. Zum Beispiel alle Ergebnisse, die von einer Abfrage zurückgegeben werden. Diese Messwerte ähneln den Messwerten api/request_sizes und api/response_sizes. Der Hauptunterschied besteht darin, dass die Vorgänge zu Entitäten eine präzisere Stichprobennahme, aber weniger detaillierte Aufschlüsselungen ermöglichen.

Für die Messwerte des Entitätsvorgangs wird beispielsweise die überwachte Ressource datastore_request verwendet, sodass es keine Dienst- oder Methodenaufschlüsselung gibt.

  • entity/read_sizes: Verteilung der Größen von gelesenen Entitäten, gruppiert nach Typ.
  • entity/write_sizes: Verteilung der Größe schriftlicher Entitäten, gruppiert nach Vorgängen.

Indexmesswerte

Sie können die Indexschreibraten mit dem Messwert document/write_ops_count vergleichen, um das Index-Fanout-Verhältnis zu ermitteln.

  • index/write_count: Anzahl der Indexschreibvorgänge.
Indexschreibrate im Vergleich zur Schreibrate des Dokuments
Abbildung 7. Im Gegensatz zur Schreibrate des Index und des Dokuments (zum Vergrößern klicken)

In Abbildung 7 sehen Sie, wie die Indexschreibrate von der Schreibrate des Dokuments abweichen kann. In diesem Beispiel gibt es für jeden Schreibvorgang eines Dokuments etwa sechs Indexschreibvorgänge, was eine relativ kleine Index-Fanout-Rate ist.

TTL-Messwerte

Die TTL-Messwerte sind sowohl für Firestore-Datenbanken als auch für Firestore-Datenbanken im Datastore-Modus verfügbar. Mit diesen Messwerten können Sie die Auswirkungen der erzwungenen TTL-Richtlinie beobachten.

  • entity/ttl_deletion_count: Gesamtzahl der Entitäten, die von TTL-Diensten gelöscht wurden.
  • entity/ttl_expiration_to_deletion_delays: Zeitraum zwischen dem Ablauf einer Entität mit einer TTL und dem Zeitpunkt, an dem sie tatsächlich gelöscht wurde.

    Wenn Sie feststellen, dass die Verzögerungen beim Löschen der TTL länger als 24 Stunden dauern, wenden Sie sich an den Support.

Nächste Schritte