Leistungsüberwachung in Firestore

Cloud Monitoring erfasst Messwerte, Ereignisse und Metadaten aus Google Cloud Produkten. Die Daten, die im Dashboard „Nutzung“ und unter „Nutzung 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 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. Überwachte Ressourcen enthalten eine eindeutige Reihe von Messwerten, die analysiert, über ein Dashboard gemeldet oder zum Erstellen von Benachrichtigungen verwendet werden können. Jede Ressource hat auch eine Reihe von Ressourcenlabels. Das sind 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) Überwachter Ressourcentyp, der Aufschlüsselungen für project, location* und database_id bietet . Das database_id Label ist (default) für Datenbanken, die ohne bestimmten Namen erstellt wurden. Gilt für beide Modi.
firestore_instance Überwachter Ressourcentyp für Firestore-Projekte, der keine Aufschlüsselung für Datenbanken bietet. Gilt für Firestore im nativen Modus
datastore_request Überwachter Ressourcentyp für Datastore-Projekte, der keine Aufschlüsselung für Datenbanken bietet. Gilt für beide Modi.

Messwerte

Firestore ist in zwei verschiedenen Modi verfügbar: Firestore im nativen Modus und Firestore im Datastore-Modus. Einen Funktions vergleich zwischen diesen beiden Modi finden Sie unter Datenbankmodus auswählen.

Eine vollständige Liste der Messwerte für beide Modi finden Sie unter den folgenden Links:

Messwerte zur Dienstlaufzeit

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

Ein wichtiges Ressourcenlabel für die serviceruntime-Messwerte ist method. Dieses Label stellt die zugrunde liegende aufgerufene RPC-Methode dar. Die von Ihnen aufgerufene SDK-Methode hat möglicherweise nicht denselben Namen wie die zugrunde liegende RPC-Methode. Der Grund dafür ist, 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.

Wenn Sie wissen möchten, welche zugrunde liegende RPC-Methode für eine bestimmte SDK-Methode verwendet wird, sehen Sie in der API-Dokumentation nach.

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

api/request_count

Dieser Messwert gibt die Anzahl der abgeschlossenen Anfragen an, aufgeschlüsselt nach Protokoll(Anfrageprotokoll wie HTTP, gRPC usw.), Antwortcode (HTTP-Antwortcode), response_code_class (Antwortcodeklasse wie 2xx, 4xx usw.) und grpc_status_code (numerischer gRPC-Antwortcode). Mit diesem Messwert können Sie die allgemeine API-Anfrage beobachten und die Fehlerrate 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 mit einem 2xx-Code nach Dienst und Methode gruppiert zu sehen. 2xx-Codes sind HTTP-Statuscodes, die angeben, dass die Anfrage erfolgreich war.

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

In Abbildung 2 sind Commits nach response_code gruppiert zu sehen. In diesem Beispiel werden nur HTTP-200-Antworten angezeigt, was bedeutet, dass die Datenbank fehlerfrei ist.

api/request_latencies

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

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

api/request_latencies zum Berechnen 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 geben Einblicke in die Nutzlastgrößen (in Byte). Diese können hilfreich sein, um Schreibarbeitslasten zu verstehen, bei denen große Datenmengen gesendet werden, oder Abfragen, die zu breit gefasst 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 klicken).

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

Messwerte für Dokumentvorgänge

Firestore gibt die Anzahl der Lese-, Schreib- und Löschvorgänge an. Der Messwert für Schreibvorgänge bietet eine Aufschlüsselung zwischen den Vorgängen „CREATE“ und „UPDATE“. Diese Messwerte sind auf CRUD-Vorgänge abgestimmt.

Anhand der folgenden Messwerte können Sie feststellen, ob Ihre Datenbank lese- oder schreiblastig ist, und die Rate neuer Dokumente im Vergleich zu gelöschten Dokumenten ermitteln.

  • document/delete_ops_count: Die Anzahl der erfolgreichen Löschvorgänge für Dokumente.
  • document/read_ops_count: Die Anzahl der erfolgreichen Lesevorgänge für Dokumente aus Abfragen oder Suchvorgängen.
  • document/write_ops_count: Die Anzahl der erfolgreichen Schreibvorgänge für Dokumente.
Verhältnis von gelesenen zu geschriebenen Dokumenten erstellen
Abbildung 6 Verhältnis von gelesenen zu geschriebenen Dokumenten erstellen (zum Vergrößern klicken).

In Abbildung 6 sehen Sie, wie Sie ein Verhältnis erstellen, das das Verhältnis von gelesenen zu geschriebenen Dokumenten zeigt. In diesem Beispiel ist die Anzahl der gelesenen Dokumente etwa 6% höher als die Anzahl der geschriebenen Dokumente.

Messwerte für die Nutzlastgröße

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

Bei den Messwerten für Dokumentvorgänge wird beispielsweise die überwachte Ressource datastore_request verwendet, sodass keine Aufschlüsselung nach Dienst oder Methode erfolgt.

  • entity/read_sizes: Verteilung der Größen von gelesenen Dokumenten.
  • entity/write_sizes: Verteilung der Größen von geschriebenen Dokumenten.

Abrechnungsmesswerte (Enterprise-Version)

Die folgenden Abrechnungsmesswerte sind nur für die Firestore Enterprise-Version verfügbar.

Anhand dieser Messwerte können Sie die Abrechnungsnutzung nachvollziehen. Diese Messwerte enthalten keine Abrechnung für Administratorvorgänge (Indexierung, Import, Export und Bulk-Löschvorgänge).

  • api/billable_read_units: Die Anzahl der abrechenbaren Leseeinheiten. Die Nutzung kann nach Dienstname und API-Methode aufgeschlüsselt werden.

  • api/billable_realtime_read_units: Die Anzahl der abrechenbaren Einheiten für Echtzeitaktualisierungen aus Echtzeitaktualisierungen.

  • api/billable_write_units: Die Anzahl der abrechenbaren Schreibvorgänge. Die Nutzung kann nach Dienstname und API-Methode aufgeschlüsselt werden.

  • document/billable_managed_delete_write_units: Die Anzahl der abrechenbaren Schreibvorgänge aus verwalteten Löschdiensten wie TTL.

Indexmesswerte

Die Schreibraten für Indexe können mit dem document/write_ops_count Messwert verglichen werden, um das Index-Fanout Verhältnis zu ermitteln.

  • index/write_count: Anzahl der Indexschreibvorgänge.
Indexschreibrate im Vergleich zur Dokumentschreibrate
Abbildung 7 Vergleich der Indexschreibrate mit der Dokumentenschreibrate (zum Vergrößern klicken).

In Abbildung 7 sehen Sie, wie die Indexschreibrate mit der Dokumentenschreibrate verglichen werden kann. In diesem Beispiel gibt es für jeden Dokumentenschreibvorgang etwa sechs Indexschreibvorgänge. Das ist eine relativ niedrige Index-Fanout-Rate.

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

Es sind zwei Messwerte für den Typ „Gauge“ sind verfügbar, um die Aktivität von Clients zu verfolgen, die über mobile SDKs, Web-SDKs oder beides 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 Mobilclient hat eine Verbindung.
  • network/snapshot_listeners: Die Anzahl der Snapshot-Listener, die derzeit für alle verbundenen Clients registriert sind. Es können mehrere Verbindungen pro Client vorhanden sein.

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

Messwerte zur Erfassung der Aktivität von Clients, die mit Firestore verbunden sind
Abbildung 8 Messwerte zur Verfolgung der Aktivität von Clients, die mit Firestore verbunden sind.

TTL-Messwerte

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

  • document/ttl_deletion_count: Gesamtzahl der Dokumente, die von TTL-Diensten gelöscht wurden.
Gesamtzahl der von TTL-Diensten gelöschten Dokumente
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 pro Minute über einen Zeitraum von mehreren Tagen gelöscht wurden.

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

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

Nächste Schritte