Comprendre la surveillance des performances dans Firestore en mode Datastore

Cloud Monitoring collecte des métriques, des événements et des métadonnées provenant des produits Google Cloud. Cloud Monitoring vous permet également de configurer des tableaux de bord personnalisés et des alertes d'utilisation.

Ce document vous aide à utiliser les métriques, à vous familiariser avec le tableau de bord des métriques personnalisées et à définir des alertes.

Ressources surveillées

Dans Cloud Monitoring, une ressource surveillée représente une entité logique ou physique, telle qu'une machine virtuelle, une base de données ou une application. Les ressources surveillées contiennent un ensemble unique de métriques qui peuvent être explorées, signalées via un tableau de bord ou utilisées pour créer des alertes. Chaque ressource possède également un ensemble de libellés de ressource, qui sont des paires clé/valeur contenant des informations supplémentaires sur la ressource. Les libellés de ressource sont disponibles pour toutes les métriques associées à la ressource.

À l'aide de l'API Cloud Monitoring, les performances de Firestore en mode Datastore sont surveillées avec les ressources suivantes:

Ressources Description Mode de base de données compatible
firestore.googleapis.com/Database (recommandée) Type de ressource surveillée qui fournit des répartitions pour project, location* et database_id . Le libellé database_id sera (default) pour les bases de données créées sans nom spécifique. Toutes les métriques sont compatibles avec les deux modes, à l'exception des métriques suivantes qui ne sont pas compatibles avec Firestore en mode Datastore :
  • document/delete_ops_count
  • document/read_ops_count
  • document/write_ops_count
datastore_request Type de ressource surveillée pour les projets Datastore et ne fournit pas de répartition pour les bases de données.

Métriques

Firestore est disponible en deux modes différents : Firestore natif et Firestore en mode Datastore. Pour comparer les fonctionnalités de ces deux modes, consultez la section Choisir entre les modes de base de données.

Pour obtenir la liste complète des métriques de Firestore en mode Datastore, consultez Métriques Firestore en Datastore.

Métriques d'exécution du service

Les métriques serviceruntime offrent une vue d'ensemble du trafic d'un projet. Ces métriques sont disponibles pour la plupart des API Google Cloud. Le type de ressource surveillée consumed_api contient ces métriques courantes. Ces métriques sont échantillonnées toutes les 30 minutes, ce qui permet de lisser les données.

method est un libellé de ressource important pour les métriques serviceruntime. Ce libellé représente la méthode RPC sous-jacente appelée. La méthode SDK que vous appelez ne peut pas nécessairement être nommée de la même manière que la méthode RPC sous-jacente. En effet, le SDK fournit une abstraction d'API de haut niveau. Toutefois, lorsque vous essayez de comprendre comment votre application interagit avec Firestore, il est important de comprendre les métriques basées sur le nom de la méthode RPC.

Pour connaître la méthode RPC sous-jacente d'une méthode SDK donnée, consultez la documentation de l'API.

api/request_count

Cette métrique indique le nombre de requêtes terminées pour tous les protocoles(protocole de requête tel que http, gRPC, etc.), le code de réponse (code de réponse HTTP), response_code_class (classe de code de réponse, telle que 2xx, 4xx, etc.) et grpc_status_code (code de réponse gRPC numérique). Utilisez cette métrique pour observer la requête API globale et calculer le taux d'erreur.

api/request_count qui renvoie un code 2xx.
Figure 1 : Métrique api/request_count (cliquez pour agrandir).

La figure 1 montre les requêtes qui renvoient un code 2xx groupé par service et par méthode. Les codes 2xx sont des codes d’état HTTP qui indiquent que la requête a abouti.

api/request_count qui renvoie un code 2xx.
Figure 2 : Métrique api/request_count qui renvoie un code 2xx (cliquez pour agrandir).

Dans la figure 2, les commits regroupés par response_code sont visibles. Dans cet exemple, nous ne voyons que des réponses HTTP 200, ce qui implique que la base de données est opérationnelle.

Utilisez les métriques d'exécution de service suivantes pour surveiller votre base de données.

api/request_count dans le type de ressource datastore_request

La métrique api/request_count est également disponible sous le type de ressource datastore_request avec les répartitions api_method et response_code. Utilisez plutôt cette métrique pour bénéficier de la période d'échantillonnage plus fine, qui permet de détecter les pics.

Métrique api/request_count sous la ressource datastore_request
Figure 3 : Métrique api/request_count sous la ressource datastore_request (cliquez pour agrandir)
api/request_latencies

La métrique api/request_latencies fournit la répartition de la latence entre toutes les requêtes terminées.

Firestore enregistre les métriques du composant Service Firestore. Les métriques de latence incluent le moment où Firestore reçoit la requête jusqu'au moment où Firestore a fini d'envoyer la réponse, y compris les interactions avec la couche de stockage. C'est pourquoi la latence aller-retour (rtt) entre le client et le service Firestore n'est pas prise en compte dans ces métriques.

api/request_latencies pour calculer la répartition de la latence
Figure 4 : api/request_latencies pour calculer la répartition de la latence
api/request_sizes et api/response_sizes

Les métriques api/request_sizes et api/response_sizes fournissent respectivement des informations sur la taille des charges utiles (en octets). Elles peuvent être utiles pour comprendre les charges de travail d'écriture qui envoient de grandes quantités de données ou de requêtes trop larges, et renvoient des charges utiles volumineuses.

Métriques api/request_sizes et api/response_sizes
Figure 5 : Métriques api/request_sizes et api/response_sizes (cliquez pour agrandir).

La figure 5 présente une carte de densité pour les tailles de réponse pour la méthode RunQuery. Nous pouvons voir que les tailles sont stables, avec une médiane de 50 octets, et entre 10 octets et 100 octets. Notez que la taille des charges utiles est toujours mesurée en octets non compressés, à l'exception des frais généraux du contrôle de transmission.

Métriques des opérations d'entité

Ces métriques fournissent des distributions en octets de charge utile pour les lectures (recherches et requêtes) et les écritures dans une base de données Firestore. Les valeurs représentent la taille totale de la charge utile. Par exemple, tous les résultats renvoyés par une requête. Ces métriques sont semblables aux métriques api/request_sizes et api/response_sizes, la principale différence étant que les métriques des opérations des entités fournissent un échantillonnage plus précis, mais des répartitions moins précises.

Par exemple, les métriques d'opération d'entité utilisent la ressource surveillée datastore_request. Il n'y a donc pas de répartition par service ou méthode.

  • entity/read_sizes: répartition des tailles des entités lues, regroupées par type.
  • entity/write_sizes: répartition des tailles des entités écrites, regroupées par opérations.

Métriques d'index

Les taux d'écriture d'index peuvent être comparés à la métrique document/write_ops_count pour comprendre le ratio de distribution de l'index.

  • index/write_count: nombre d'écritures d'index.
Comparaison entre le taux d'écriture de l'index et le taux d'écriture du document
Figure 7 : Comparaison entre le taux d'écriture de l'index et le taux d'écriture du document (cliquez pour agrandir).

Dans la figure 7, vous pouvez comparer le taux d'écriture de l'index au taux d'écriture du document. Dans cet exemple, chaque écriture de document compte environ 6 écritures d'index, ce qui représente un taux de distribution ramifiée relativement faible.

Métriques TTL

Les métriques TTL sont disponibles pour les bases de données Firestore natives et en mode Datastore. Utilisez ces métriques pour surveiller l'effet de la règle TTL appliquée.

  • entity/ttl_deletion_count: nombre total d'entités supprimées par les services TTL.
  • entity/ttl_expiration_to_deletion_delays: temps écoulé entre le moment où une entité avec une valeur TTL a expiré et le moment où elle a été réellement supprimée.

    Si vous constatez que les délais de suppression de la valeur TTL prennent plus de 24 heures, contactez l'assistance.

Étapes suivantes