Surveiller les métriques des bases de données

Cette page explique comment utiliser les métriques Cloud Monitoring pour Cloud Firestore afin de surveiller votre base de données.

Cloud Monitoring métriques pour Cloud Firestore

Les sections suivantes présentent les métriques disponibles pour Cloud Firestore.

Ressources surveillées

Une ressource surveillée dans Cloud Monitoring 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 d'étiquettes de ressource, qui sont des paires clé/valeur contenant des informations supplémentaires sur la ressource. Les libellés de ressources sont disponibles pour toutes les métriques associées à la ressource.

Avec l'API Cloud Monitoring, les performances de Cloud Firestore sont surveillées à l'aide de la ressource suivante :

Ressources Description
firestore.googleapis.com/Database Type de ressource surveillée qui fournit des répartitions pour project, location et database_id.

Métriques

Pour obtenir la liste complète des métriques pour Cloud Firestore, consultez Métriques Cloud Firestore. La section suivante décrit certaines des métriques disponibles.

Métriques d'exécution du service

Les métriques serviceruntime fournissent 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. Cette étiquette représente l'appel de méthode RPC sous-jacent. La méthode du SDK que vous appelez ne porte pas nécessairement le même nom 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 Cloud Firestore, il est important de comprendre les métriques en fonction du nom de la méthode RPC.

Si vous avez besoin de connaître la méthode RPC sous-jacente pour une méthode de SDK donnée, consultez la documentation de l'API.

api/request_latencies

La métrique api/request_latencies fournit des distributions de latence pour toutes les requêtes terminées.

Cloud Firestore enregistre les métriques du composant Service Cloud Firestore. Les métriques de latence incluent le temps écoulé entre la réception de la requête par Cloud Firestore et la fin de l'envoi de la réponse par Cloud Firestore, y compris les interactions avec la couche de stockage. Par conséquent, la latence aller-retour (rtt) entre le client et le service Cloud Firestore n'est pas incluse dans ces métriques.

Métriques des opérations sur les documents

Cloud Firestore fournit le nombre de lectures, d'écritures et de suppressions. La métrique d'écriture fournit une répartition entre les opérations "CREATE" et "UPDATE". Ces métriques sont alignées sur les opérations CRUD.

Les métriques suivantes peuvent être utilisées pour déterminer si votre base de données est intensive en lecture ou en écriture, ainsi que le taux de nouveaux documents par rapport aux documents supprimés.

  • document/delete_ops_count : nombre de suppressions de documents réussies.
  • document/read_ops_count : nombre de lectures de documents réussies à partir de requêtes ou de recherches.
  • document/write_ops_count : nombre d'écritures de documents réussies.

Métriques de facturation

Utilisez ces métriques pour comprendre l'utilisation de la facturation. Ces métriques n'incluent pas la facturation des opérations d'administration (indexation, importation, exportation et suppression groupée).

  • api/billable_read_units : nombre d'unités de lecture facturables. L'utilisation peut être répartie par nom de service et par méthode d'API.
  • api/billable_realtime_read_units : nombre d'unités de mise à jour en temps réel facturables à partir des mises à jour en temps réel. Cela ne s'applique qu'à Cloud Firestore en mode natif.
  • api/billable_write_units : nombre d'unités d'écriture facturables. L'utilisation peut être répartie par nom de service et par méthode d'API.
  • document/billable_managed_delete_write_units : nombre d'unités d'écriture facturables provenant de services de suppression gérés tels que la TTL.

Métriques d'index

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

  • index/write_count : nombre d'écritures d'index.

Métriques TTL

Les métriques TTL pour les métriques Cloud Firestore permettent de surveiller l'effet de la règle TTL appliquée.

  • document/ttl_deletion_count : nombre total de documents supprimés par les services TTL.
  • document/ttl_expiration_to_deletion_delays : temps écoulé entre l'expiration d'un document avec un TTL et sa suppression effective.

Afficher les tableaux de bord prédéfinis et créer des tableaux de bord personnalisés

Cloud Firestore est compatible avec les tableaux de bord prédéfinis qui utilisent les métriques Cloud Monitoring. Vous pouvez aussi créer des tableaux de bord personnalisés.

Afficher les métriques d'utilisation de la base de données

Ouvrez les tableaux de bord d'utilisation dans la console Google Cloud pour afficher les lectures, écritures et suppressions de documents au fil du temps.

Contrôle des accès

Les tableaux de bord d'utilisation nécessitent l'autorisation IAM (Identity and Access Management) monitoring.timeSeries.list. Les rôles Propriétaire du projet, Éditeur du projet et Lecteur du projet accordent cette autorisation. Vous pouvez également accorder cette autorisation via un rôle Cloud Monitoring ou un rôle personnalisé.

Tableau de bord d'utilisation de la base de données

Pour afficher les métriques d'utilisation d'une base de données Cloud Firestore, procédez comme suit :

  1. Dans la console Google Cloud, accédez à la page Base de données.

    Accéder à la page "Bases de données"

  2. Sélectionnez la base de données requise dans la liste des bases de données.

  3. Dans le menu de navigation, cliquez sur Utilisation.

Tableau de bord d'utilisation et rapports de facturation

Les tableaux de bord d'utilisation de Cloud Firestore dans la console fournissent une estimation de l'utilisation. Ils peuvent vous aider à identifier les pics d'utilisation. Toutefois, le tableau de bord n'est pas une vue exacte des opérations facturées. Le niveau d'utilisation facturé est généralement plus important. Pour surveiller la facturation, consultez Métriques de facturation.

Dans tous les cas où un écart est constaté, le rapport de facturation prévaut sur le tableau de bord d'utilisation.

Les opérations d'importation et d'exportation entraînent des écarts entre le tableau de bord d'utilisation et l'utilisation facturée. Les lectures et écritures effectuées par ces opérations n'apparaissent pas dans le tableau de bord d'utilisation.

Afficher les métriques de performances de la base de données

La page Surveillance de la section Cloud Firestore de la console Google Cloud inclut des tableaux de bord de surveillance prédéfinis tels que Latences des requêtes (P50 et P99), Codes de réponse et Statistiques des requêtes (P50). Vous pouvez également créer un tableau de bord personnalisé. Pour accéder à la page Surveillance d'une base de données, procédez comme suit :

  1. Dans la console Google Cloud, ouvrez la page Bases de données de Cloud Firestore.

    Accéder à la page "Bases de données"

  2. Sélectionnez une base de données dans la liste.

  3. Dans le menu de navigation, cliquez sur Surveillance pour ouvrir un tableau de bord.

Créer des tableaux de bord Cloud Monitoring personnalisés

Dans Cloud Monitoring, les tableaux de bord personnalisés vous permettent d'afficher les informations qui vous intéressent de manière organisée. Par exemple, vous pouvez créer un tableau de bord pour afficher les métriques de performances et les règles d'alerte de votre projet dans votre environnement de production.

Pour en savoir plus sur la configuration d'un tableau de bord personnalisé, consultez Gérer un tableau de bord personnalisé et Ajouter des widgets au tableau de bord.

Créer une règle d'alerte

Dans Cloud Monitoring, vous pouvez créer des alertes pour être averti lorsqu'une condition de métrique change. Vous pouvez utiliser ces alertes pour être informé des problèmes potentiels avant qu'ils n'affectent vos utilisateurs.

Pour en savoir plus sur la création d'alertes, consultez Créer des règles d'alerte basées sur un seuil de métrique.

Prenons l'exemple suivant, dans lequel nous créons une règle d'alerte de latence. La règle d'alerte vérifie la latence p99 sur une fenêtre glissante de cinq minutes. Si la latence p99 reste supérieure à 250 ms pendant cinq minutes, l'alerte est déclenchée.

Console

  1. Dans la console Google Cloud, accédez à la page Monitoring, puis sélectionnez   Alertes.

    Accéder à Monitoring

  2. Sélectionnez Créer une règle.

  3. Sélectionnez la métrique Latences des requêtes dans la ressource API Consumed.

  4. Ajoutez un filtre de service pour firestore.googleapis.com pour les bases de données Firestore en mode natif.

  5. Cliquez sur Suivant pour configurer le déclencheur.

  6. Sélectionnez Seuil pour Types de condition.

    Une condition de seuil est définie sur une valeur de seuil de 250 ms. Une alerte est déclenchée lorsque la valeur de latence p99 reste la même pendant toute la durée de la fenêtre glissante (5 min).

  7. Définissez la valeur du seuil sur 250.

  8. Cliquez sur Suivant pour configurer les notifications.

  9. Définissez le nom de la règle d'alerte, puis cliquez sur Suivant.

  10. Vérifiez les configurations de l'alerte, puis cliquez sur Créer une règle.

MQL

Vous pouvez implémenter la même règle d'alerte de latence à l'aide d'une requête MQL (Monitoring Query Language). Pour obtenir d'autres exemples d'utilisation de MQL, consultez Exemples de requêtes MQL.

fetch consumed_api
| metric 'serviceruntime.googleapis.com/api/request_latencies'
| filter (resource.service == 'firestore.googleapis.com')
| group_by 5m,
    [value_request_latencies_percentile:
      percentile(value.request_latencies, 99)]
| every 5m
| condition val() > 0.25 's'