Leistungsüberwachung in Firestore

Cloud Monitoring erfasst Messwerte, Ereignisse und Metadaten aus Google Cloud-Produkten. Die Daten, die im Dashboard zur Nutzung und zur Nutzung von Sicherheitsregeln erfasst werden, können auch über Cloud Monitoring für eine detailliertere Analyse abgerufen 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 kennenlernen und Benachrichtigungen einrichten.

Überwachte Ressourcen

Eine überwachte Ressource in Cloud Monitoring stellt eine logische oder physische Entität dar, z. B. eine virtuelle Maschine, eine Datenbank oder eine Anwendung. Gemonitorte Ressourcen enthalten eine Reihe von Messwerten, die untersucht, in einem Dashboard dargestellt oder zum Erstellen von Benachrichtigungen verwendet werden können. Jede Ressource hat außerdem eine Reihe von Ressourcenlabels. Das sind Schlüssel/Wert-Paare, die zusätzliche Informationen zur Ressource enthalten. Ressourcenlabels sind für alle mit der Ressource verknüpften Messwerte verfügbar.

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

Ressourcen Beschreibung Unterstützter Datenbankmodus
firestore.googleapis.com/Database (empfohlen) Typ der überwachten Ressource mit Aufschlüsselungen für project, location* und database_id . Das database_id-Label ist (default) für Datenbanken, die ohne einen bestimmten Namen erstellt wurden. 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, der keine Aufschlüsselung nach Datenbanken enthält. Gilt für Firestore-nativ
datastore_request Überwachter Ressourcentyp für Datastore-Projekte, der keine Aufschlüsselung nach Datenbanken enthält. Gilt für beide Modi.

Messwerte

Firestore ist in zwei verschiedenen Modi verfügbar: Firestore Native und Firestore im Datastore-Modus. Einen Funktionsvergleich dieser beiden Modi finden Sie unter Zwischen Datenbankmodi wä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 die Zugriffe eines Projekts. Diese Messwerte sind für die meisten Google Cloud APIs verfügbar. Der Typ der überwachten Ressource consumed_api enthält diese gängigen Messwerte. Diese Messwerte werden alle 30 Minuten abgetastet, wodurch die Daten geglättet werden.

Ein wichtiges Ressourcenlabel für die serviceruntime-Messwerte ist method. Dieses Label steht für die aufgerufene zugrunde liegende RPC-Methode. Die von Ihnen aufgerufene SDK-Methode muss nicht unbedingt mit der zugrunde liegenden RPC-Methode übereinstimmen. Das liegt daran, dass das SDK eine API-Abstraktion auf höherer Ebene bietet. Wenn Sie jedoch verstehen 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 einer bestimmten 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 nach Protokoll(Anfrageprotokoll, z. B. HTTP, gRPC usw.), Antwortcode (HTTP-Antwortcode), response_code_class (Antwortcodeklasse, z. B. 2xx, 4xx usw.) und grpc_status_code (numerischer gRPC-Antwortcode) an. Verwenden Sie diesen Messwert, um die API-Anfrage insgesamt zu beobachten und die Fehlerrate zu berechnen.

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

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

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

In Abbildung 2 sind Commits zu sehen, die nach response_code gruppiert sind. In diesem Beispiel sehen wir nur HTTP-Antworten vom Typ 200, was bedeutet, dass die Datenbank in Ordnung ist.

api/request_latencies

Der Messwert api/request_latencies enthält Latenzverteilungen für alle abgeschlossenen Anfragen.

Firestore erfasst Messwerte aus der Komponente Firestore-Dienst. Latenzmesswerte umfassen den Zeitraum zwischen dem Empfang der Anfrage durch Firestore und dem Senden der Antwort durch Firestore, einschließlich der Interaktionen mit der Speicherebene. Daher ist die RTT (Round-Trip-Latenz) zwischen dem Client und dem Firestore-Dienst nicht in diesen Messwerten enthalten.

api/request_latencies zur Berechnung der Latenzverteilung
Abbildung 4: api/request_latencies zum Berechnen der Latenzverteilung
api/request_sizes und api/response_sizes

Die Messwerte api/request_sizes und api/response_sizes liefern Informationen zur Nutzlastgröße (in Byte). Sie können hilfreich sein, um Schreibarbeitslasten zu verstehen, die große Datenmengen senden oder zu breit gefasste Abfragen sind und große Nutzlasten zurückgeben.

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

In Abbildung 5 ist eine Heatmap für Antwortgrößen für die Methode RunQuery zu sehen. Die Größen sind gleichmäßig, der Median liegt bei 50 Byte und insgesamt liegen sie zwischen 10 und 100 Byte. Die Nutzlastgrößen werden immer in unkomprimierten Byte gemessen, ohne Übertragungssteuerungsoverhead.

Messwerte für die Dokumentenbearbeitung

Firestore bietet Zählungen für Lese-, Schreib- und Löschvorgänge. Der Messwert „Schreiben“ enthält eine Aufschlüsselung nach den Vorgängen „CREATE“ und „UPDATE“. Diese Messwerte sind an CRUD-Vorgänge ausgerichtet.

Anhand der folgenden Messwerte können Sie feststellen, ob Ihre Datenbank hauptsächlich gelesen oder geschrieben wird, und wie viele neue Dokumente im Vergleich zu gelöschten Dokumenten erstellt werden.

  • document/delete_ops_count: Die Anzahl der erfolgreichen Dokumentlöschvorgänge.
  • document/read_ops_count: Die Anzahl der erfolgreichen Dokumentlesevorgänge aus Abfragen oder Suchanfragen.
  • 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 der gelesenen zu den geschriebenen Dokumente zeigt. In diesem Beispiel ist die Anzahl der gelesenen Dokumente etwa 6% höher als die Anzahl der geschriebenen Dokumente.

Messwerte für die Dokumentenbearbeitung

Diese Messwerte liefern die Verteilung der Nutzlastgrößen in Byte für Lesevorgänge (Suchanfragen und Abfragen) und Schreibvorgänge in einer Firestore-Datenbank. Die Werte geben die Gesamtgröße der Nutzlast an. Beispielsweise 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 Dokumentvorgänge eine detailliertere Stichprobenerhebung, aber weniger detaillierte Aufschlüsselungen bieten.

Für die Messwerte zu Dokumentvorgängen wird beispielsweise die überwachte Ressource datastore_request verwendet, sodass keine Aufschlüsselung nach Dienst oder Methode erfolgt.

  • entity/read_sizes: Verteilung der Größe der gelesenen Dokumente.
  • entity/write_sizes: Verteilung der Größe schriftlicher Dokumente.

Indexmesswerte

Die Schreibraten von Indexen können mit dem Messwert document/write_ops_count verglichen werden, um das Index-Fan-out-Verhältnis zu ermitteln.

  • index/write_count: Anzahl der Indexeinträge.
Schreibrate des Index im Vergleich zur Schreibrate des Dokuments
Abbildung 7 Schreibrate des Index im Vergleich zur Schreibrate des Dokuments (zum Vergrößern anklicken)

In Abbildung 7 sehen Sie, wie sich die Schreibrate des Index mit der Schreibrate des Dokuments vergleichen lässt. In diesem Beispiel werden für jeden Dokumentschreibvorgang etwa sechs Indexschreibvorgänge ausgeführt. Das ist eine relativ geringe Indexverzweigungsrate.

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

Es gibt zwei Messwerte, mit denen sich Aktivitäten von Clients erfassen lassen, die entweder über Mobil-SDKs, Web-SDKs oder beide direkt mit Firestore-Datenbanken verbunden sind. Diese Messwerte umfassen eine Funktion für Echtzeit-Snapshot-Listener, bei der relevante Änderungen in der Datenbank sofort an die Clients gestreamt werden.

  • network/active_connections: Die Anzahl der aktiven Verbindungen zu diesem Zeitpunkt. Jeder Web- oder mobile Client hat eine Verbindung.
  • network/snapshot_listeners: Die Anzahl der derzeit bei allen verbundenen Clients registrierten Snapshot-Listener. Es kann mehrere Verbindungen pro Client geben.

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

Messwerte zum Erfassen der Aktivitäten von mit Firestore verbundenen Clients
Abbildung 8: Messwerte zum Erfassen der Aktivitäten von Clients, die mit Firestore verbunden sind.

TTL-Messwerte

Die TTL-Messwerte sind sowohl für Firestore-Datenbanken im nativen Modus 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: Die 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 Anzahl der Dokumente, die im Laufe mehrerer Tage pro Minute gelöscht wurden.

  • document/ttl_expiration_to_deletion_delays: Zeitspanne zwischen dem Ablauf eines Dokuments mit einer TTL und dem tatsächlichen Löschen.
Zeit in Sekunden, die Firestore zum Löschen von Dokumenten mit TTL-Richtlinien benötigt
Abbildung 10: Zeit in Sekunden, die Firestore zum Löschen von Dokumenten mit TTL-Richtlinien benötigt (zum Vergrößern anklicken)

In Abbildung 10 sehen Sie, dass dieser Messwert eine Verteilung der Zeit in Sekunden enthält, die Firestore zum Löschen von Dokumenten mit TTL-Richtlinien benötigt hat. Das Löschen von Dokumenten, deren TTL abgelaufen ist, dauert beim 99.Perzentil weniger als 0,5 Sekunden. Das bedeutet, dass das System normal funktioniert. In der Regel werden abgelaufene Dokumente in Firestore innerhalb von 24 Stunden gelöscht. Dies kann jedoch nicht garantiert werden. Wenn es länger als 24 Stunden dauert, wenden Sie sich an den Support.

Nächste Schritte