Leistungsmonitoring in Firestore verstehen

Cloud Monitoring erfasst Messwerte, Ereignisse und Metadaten aus Google Cloud-Produkten. Die Daten, die im Nutzungsdashboard und in der Verwendung von Sicherheitsregeln gemeldet werden, können auch über Cloud Monitoring für eine detailliertere Analyse aufgerufen werden. 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 Firestore-Leistung 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
firestore_instance Überwachter Ressourcentyp für Firestore-Projekte und bietet keine Aufschlüsselung für Datenbanken. Gilt für Firestore-nativ
datastore_request Überwachter Ressourcentyp für Datastore-Projekte und keine Aufschlüsselung für Datenbanken. Gilt für beide Modi.

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 beide Modi finden Sie unter den folgenden Links:

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.

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

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.

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.

Messwerte für Dokumentvorgänge

Firestore gibt die Anzahl der Lese-, Schreib- und Löschvorgänge an. Der Schreibmesswert bietet eine Aufschlüsselung zwischen den Vorgängen "CREATE" und "UPDATE". Diese Messwerte sind auf CRUD-Vorgänge ausgerichtet.

Anhand der folgenden Messwerte können Sie feststellen, ob Ihre Datenbank lese- oder schreibintensive Datenbank hat und wie hoch die Rate neuer und gelöschter Dokumente ist.

  • document/delete_ops_count: Die Anzahl der erfolgreichen Dokumentlöschungen.
  • document/read_ops_count: Die Anzahl der erfolgreichen Dokumentlesevorgänge aus Abfragen oder Suchvorgängen.
  • document/write_ops_count: Die Anzahl der erfolgreichen Dokumentschreibvorgänge.
Verhältnis zwischen gelesenen und geschriebenen Dokumenten erstellen
Abbildung 6. Erstellen Sie ein Verhältnis zwischen gelesenen und geschriebenen Dokumenten (zum Vergrößern klicken).

In Abbildung 6 sehen Sie, wie Sie ein Verhältnis erstellen, das das Verhältnis zwischen gelesenen und geschriebenen Dokumenten darstellt. In diesem Beispiel ist die Anzahl der gelesenen Dokumente etwa 6% mehr als die Anzahl der geschriebenen Dokumente.

Messwerte für Dokumentvorgänge

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 Messwerte für den Dokumentvorgang detailgenauere Stichproben, aber weniger detaillierte Aufschlüsselungen ermöglichen.

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

  • entity/read_sizes: Verteilung der Größen gelesener Dokumente.
  • entity/write_sizes: Verteilung der Größen schriftlicher Dokumente.

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.

Clients, die über Firebase SDKs direkt mit der Datenbank verbunden sind

Es sind Messwerte mit zwei Tachometerdiagrammen verfügbar, um Aktivitäten von Clients zu verfolgen, die über Mobile SDKs, Web SDKs oder beides direkt mit Firestore-Datenbanken verbunden sind. Diese Messwerte umfassen eine Funktionalität für Snapshot-Listener in Echtzeit, bei denen relevante Änderungen in der Datenbank sofort an Clients zurückgesendet werden.

  • network/active_connections: Die Anzahl der aktiven Verbindungen zu einem bestimmten Zeitpunkt. Jeder Web- oder mobile Client hat eine Verbindung.
  • network/snapshot_listeners: Die Anzahl der Snapshot-Listener, die derzeit für alle verbundenen Clients registriert sind. Pro Client können mehrere Verbindungen vorhanden sein.

Sie können sich diese Messwerte in der Firebase Console auf dem Tab Usage der Firestore-Datenbank ansehen.

Messwerte zum Nachverfolgen der Aktivität von Clients, die mit Firestore verbunden sind
Abbildung 8. Messwerte, um die Aktivität von Clients zu verfolgen, die mit Firestore verbunden sind.

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.

  • document/ttl_deletion_count: Gesamtzahl der Dokumente, die von TTL-Diensten gelöscht wurden.
Gesamtzahl der Dokumente, die von TTL-Diensten gelöscht wurden
Abbildung 9. Gesamtzahl der Dokumente, die von TTL-Diensten gelöscht wurden (zum Vergrößern klicken).

In Abbildung 9 sehen Sie die Rate der Dokumente, die jede Minute über einen Zeitraum von Tagen gelöscht werden.

  • document/ttl_expiration_to_deletion_delays: Verstrichener Zeitraum zwischen dem Ablauf eines Dokuments mit einer TTL und dem Zeitpunkt, zu dem es tatsächlich gelöscht wurde.
Zeit in Sekunden, die Firestore benötigt, um Dokumente mit TTL-Richtlinien zu löschen
Abbildung 10. Zeit in Sekunden, die Firestore benötigt, um Dokumente mit TTL-Richtlinien zu löschen (zum Vergrößern klicken).

In Abbildung 10 sehen Sie, dass dieser Messwert eine Verteilung der Zeit in Sekunden darstellt, die Firestore benötigt hat, um Dokumente mit TTL-Richtlinien zu löschen. Es dauert weniger als 0,5 Sekunden, um TTL abgelaufene Dokumente im 99.Perzentil zu löschen. Dies bedeutet, dass das System normal funktioniert. Firestore löscht abgelaufene Dokumente in der Regel innerhalb von 24 Stunden. Dies kann jedoch nicht garantiert werden. Wenn der Vorgang länger als 24 Stunden dauert, wenden Sie sich an den Support.

Nächste Schritte