Créer des règles d'alerte en cas d'absence de métrique

Ce document explique comment utiliser la console Google Cloud pour créer une règle d'alerte qui envoie des notifications lorsqu'une série temporelle surveillée ne contient aucune donnée pendant un intervalle de temps spécifique.

Les conditions d'absence de métrique nécessitent au moins une mesure réussie (qui récupère les données) dans l'intervalle de temps maximal suivant l'installation ou la modification de la règle. La période maximale configurable est de 24 heures si vous utilisez la console Google Cloud et de 24,5 heures si vous utilisez l'API Cloud Monitoring.

Supposons, par exemple, que vous définissiez l'intervalle de temps d'une règle d'absence de métrique sur 30 minutes. La condition ne peut pas être remplie lorsque le sous-système qui écrit les données de métrique n'a jamais écrit de point de données. Pour qu'elle soit remplie, le sous-système doit générer au moins un point de données, puis ne générer aucun point de données supplémentaire pendant 30 minutes.

Ce contenu ne concerne pas les règles d'alerte basées sur les journaux. Pour en savoir plus sur les règles d'alerte basées sur les journaux, qui vous envoient une notification lorsqu'un message particulier s'affiche dans les journaux, consultez la page Surveiller vos journaux.

Ce document ne décrit pas les éléments suivants:

Avant de commencer

  1. Pour obtenir les autorisations dont vous avez besoin pour créer et modifier des règles d'alerte à l'aide de la console Google Cloud, demandez à votre administrateur de vous attribuer le rôle IAM Éditeur Monitoring (roles/monitoring.editor) sur votre projet. Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

    Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

    Pour en savoir plus sur les rôles Cloud Monitoring, consultez la page Contrôler les accès avec Identity and Access Management.

  2. Assurez-vous de bien connaître les concepts généraux liés aux règles d'alerte. Pour en savoir plus sur ces sujets, consultez la page Présentation des alertes.

  3. Configurez les canaux de notification que vous souhaitez utiliser pour recevoir des alertes. À des fins de redondance, nous vous recommandons de créer plusieurs types de canaux de notification. Pour en savoir plus, consultez Créer et gérer des canaux de notification.

Créer une règle d'alerte

Pour créer une règle d'alerte qui envoie des notifications lorsqu'une série temporelle surveillée ne contient aucune donnée pendant une période spécifique, procédez comme suit:

  1. Dans le panneau de navigation de la console Google Cloud, sélectionnez Monitoring, puis  Alertes :

    Accéder à l'interface des alertes

  2. Sélectionnez Créer une règle.
  3. Sélectionnez la série temporelle à surveiller :

    1. Cliquez sur Sélectionner une métrique, parcourez les menus pour sélectionner un type de ressource et un type de métrique, puis cliquez sur Appliquer.

      Le menu Sélectionner une métrique contient des fonctionnalités qui vous aident à trouver les types de métriques disponibles:

      • Pour rechercher un type de métrique spécifique, utilisez la barre de filtres . Par exemple, si vous saisissez util, vous restreignez le menu pour afficher les entrées qui incluent util. Les entrées s'affichent lorsqu'elles réussissent un test "contient" non sensible à la casse.

      Vous pouvez surveiller n'importe quelle métrique intégrée ou toute métrique définie par l'utilisateur.

    2. Facultatif: Pour surveiller un sous-ensemble de séries temporelles correspondant aux types de métriques et de ressources que vous avez sélectionnés à l'étape précédente, cliquez sur Ajouter un filtre. Dans la boîte de dialogue de filtrage, sélectionnez l'étiquette de filtrage, un comparateur, puis la valeur du filtre. Par exemple, le filtre zone =~ ^us.*.a$ utilise une expression régulière pour faire correspondre toutes les données de séries temporelles dont le nom de zone commence par us et se termine par a. Pour en savoir plus, consultez Filtrer la série temporelle sélectionnée.

    3. Facultatif: Pour modifier l'alignement des points d'une série temporelle, définissez les champs Fenêtre glissante et Fenêtrage glissant dans la section Transformer les données.

      Ces champs spécifient la manière dont les points enregistrés dans une fenêtre sont combinés. Par exemple, supposons que la fenêtre soit de 15 minutes et que le fenêtrage soit max. Le point aligné correspond à la valeur maximale de tous les points au cours des 15 dernières minutes. Pour en savoir plus, consultez la section Alignement: régularisation au sein de la série.

    4. Facultatif: combinez des séries temporelles lorsque vous souhaitez réduire le nombre de séries temporelles surveillées par une règle ou seulement une collection de séries temporelles. Par exemple, au lieu de surveiller l'utilisation du processeur de chaque instance de VM, vous pouvez calculer la moyenne d'utilisation du processeur pour toutes les VM d'une zone, puis surveiller cette moyenne. Par défaut, les séries temporelles ne sont pas combinées. Pour obtenir des informations générales, consultez la section Réduction: combiner des séries temporelles.

      Pour combiner toutes les séries temporelles, procédez comme suit:

      1. Dans la section Sur plusieurs séries temporelles, cliquez sur Développer.
      2. Définissez le champ Agrégation de séries temporelles sur une valeur autre que none. Par exemple, pour afficher la valeur moyenne de la série temporelle, sélectionnez mean.
      3. Vérifiez que le champ Grouper les séries temporelles par est vide.

      Pour combiner ou regrouper des séries temporelles par valeurs de libellé, procédez comme suit:

      1. Dans la section Sur plusieurs séries temporelles, cliquez sur Développer.
      2. Définissez le champ Agrégation de séries temporelles sur une valeur autre que none.
      3. Dans le champ TimeSeries group by (Grouper par), sélectionnez les libellés selon lesquels vous souhaitez regrouper les données.

      Par exemple, si vous effectuez un regroupement par libellé zone, puis définissez le champ d'agrégation sur la valeur mean, le graphique affiche une série temporelle pour chaque zone pour laquelle il existe des données. La série temporelle affichée pour une zone spécifique correspond à la moyenne de toutes les séries temporelles pour cette zone.

    5. Cliquez sur Suivant.

  4. Configurez le déclencheur de la condition:

    1. Sélectionnez Absence de métrique pour le type de condition.
    2. Sélectionnez une valeur pour le menu Déclencheur d'alerte. Ce menu vous permet de spécifier le sous-ensemble de séries temporelles qui ne doit pas contenir de données avant que la condition ne soit remplie.
    3. Spécifiez la durée pendant laquelle les données de métriques doivent être absentes avant que les alertes ne vous avertissent à l'aide du champ Délai d'absence du déclencheur.
    4. Cliquez sur Suivant.
  5. Facultatif: créez une règle d'alerte avec plusieurs conditions.

    La plupart des règles surveillent un seul type de métrique. Par exemple, une règle peut surveiller le nombre d'octets écrits sur une instance de VM. Si vous souhaitez surveiller plusieurs types de métriques, créez une règle avec plusieurs conditions. Chaque condition surveille un type de métrique. Après avoir créé les conditions, vous spécifiez leur mode de combinaison. Pour en savoir plus, consultez la section Règles avec plusieurs conditions.

    Pour créer une règle d'alerte avec plusieurs conditions, procédez comme suit:

    1. Pour chaque condition supplémentaire, cliquez sur Ajouter une condition d'alerte, puis configurez-la.
    2. Cliquez sur Suivant et configurez la combinaison des conditions.
    3. Cliquez sur Suivant pour passer aux notifications et à la configuration de la documentation.
  6. Configurez les notifications:

    1. Développez le menu Notifications et nom, puis sélectionnez vos canaux de notification. À des fins de redondance, nous vous recommandons d'ajouter à une règle d'alerte plusieurs types de canaux de notification. Pour en savoir plus, consultez Gérer les canaux de notification.

    2. Facultatif: Pour recevoir une notification lorsqu'un incident est fermé, sélectionnez Notifier en cas de fermeture d'incident. Par défaut, lorsque vous créez une règle d'alerte avec la console Google Cloud, une notification n'est envoyée que lorsqu'un incident est créé.

    3. Facultatif: Pour modifier le délai d'attente de Monitoring avant la fermeture d'un incident après l'arrêt des données, sélectionnez une option dans le menu Délai pour la fermeture automatique de l'incident. Par défaut, lorsque les données cessent d'arriver, Monitoring attend sept jours avant de fermer un incident ouvert.

    4. Sélectionnez une option dans le menu Niveau de gravité de la règle. Les incidents et les notifications affichent le niveau de gravité.

    5. Facultatif: Pour ajouter des étiquettes personnalisées à la règle d'alerte, dans la section Libellés de l'utilisateur des règles, procédez comme suit:

      1. Cliquez sur Ajouter une étiquette, puis dans le champ Clé, saisissez un nom pour le libellé. Les noms d'étiquettes doivent commencer par une lettre minuscule et peuvent contenir des lettres minuscules, des chiffres, des traits de soulignement et des tirets. Par exemple, saisissez severity.
      2. Cliquez sur Valeur, puis saisissez la valeur du libellé. Les valeurs d'étiquette peuvent contenir des lettres minuscules, des chiffres, des traits de soulignement et des tirets. Par exemple, saisissez critical.

      Pour en savoir plus sur la gestion des alertes à l'aide de libellés de règle, consultez la page Annoter les alertes avec des libellés.

  7. Facultatif: dans la section Documentation, saisissez le contenu à inclure dans la notification.

    Pour mettre en forme votre documentation, vous pouvez utiliser du texte brut, Markdown et des variables. Vous pouvez également inclure des liens pour aider les utilisateurs à déboguer l'incident, tels que des liens vers des playbooks internes, des tableaux de bord Google Cloud et des pages externes. Par exemple, le modèle de documentation suivant décrit un incident d'utilisation du processeur pour une ressource gce_instance, et inclut plusieurs variables pour référencer la règle d'alerte et les ressources REST de condition. Le modèle de documentation redirige ensuite les lecteurs vers des pages externes pour faciliter le débogage.

    Lorsque des notifications sont créées, Monitoring remplace les variables de documentation par leurs valeurs. Les valeurs remplacent les variables uniquement dans les notifications. Le volet d'aperçu et les autres emplacements de la console Google Cloud n'affichent que le format Markdown.

    Aperçu

    ## CPU utilization exceeded
    
    ### Summary
    
    The ${metric.display_name} of the ${resource.type}
    ${resource.label.instance_id} in the project ${resource.project} has
    exceeded 90% for over 15 minutes.
    
    ### Additional resource information
    
    Condition resource name: ${condition.name}
    Alerting policy resource name: ${policy.name}
    
    ### Troubleshooting and Debug References
    
    Repository with debug scripts: example.com
    Internal troubleshooting guide: example.com
    ${resource.type} dashboard: example.com
    

    Mettre en forme la notification

    Exemple d'affichage de la documentation dans une notification.

    Pour en savoir plus, consultez Annoter des alertes avec la documentation définie par l'utilisateur et Utiliser des commandes de canal.

  8. Cliquez sur Nom de l'alerte et saisissez un nom pour la règle d'alerte.

  9. Cliquez sur Créer une stratégie.

Filtrer la série temporelle sélectionnée

Les filtres garantissent que seules les séries temporelles répondant à un ensemble de critères sont surveillées. Lorsque vous appliquez des filtres, vous pouvez réduire le nombre de lignes du graphique, ce qui peut améliorer ses performances. Vous pouvez également réduire la quantité de données surveillées en appliquant une agrégation. Les filtres permettent de s'assurer que seules les séries temporelles répondant à un ensemble de critères sont utilisées. Lorsque vous appliquez des filtres, il y a moins de séries temporelles à évaluer, ce qui peut améliorer les performances de l'alerte.

Un filtre est composé d'une étiquette, d'un comparateur et d'une valeur. Par exemple, pour faire correspondre toutes les séries temporelles dont le libellé zone commence par "us-central1", vous pouvez utiliser le filtre zone=~"us-central1.*", qui utilise une expression régulière pour effectuer la comparaison.

Lorsque vous filtrez les données par ID de projet ou par conteneur de ressources, vous devez utiliser l'opérateur est égal à (=). Lorsque vous filtrez selon d'autres étiquettes, vous pouvez utiliser n'importe quel comparateur compatible. En règle générale, vous pouvez filtrer les libellés de métriques et de ressources, et par groupe de ressources.

Lorsque vous fournissez plusieurs critères de filtrage, seules les séries temporelles qui répondent à tous les critères sont surveillées.

Pour ajouter un filtre, cliquez sur Ajouter un filtre, remplissez la boîte de dialogue, puis cliquez sur OK. Dans la boîte de dialogue, utilisez le champ Filtrer pour sélectionner le critère de filtrage, sélectionnez l'opérateur de comparaison, puis la valeur. Chaque ligne du tableau suivant répertorie un opérateur de comparaison, sa signification et un exemple:

OpérateurSignificationExemple
= Égalité resource.labels.zone = "us-central1-a"
!= Inégalité resource.labels.zone != "us-central1-a"
=~ Égalité de l'expression régulière 2 monitoring.regex.full_match("^us.*")
!=~ Inégalité d'expression régulière2 monitoring.regex.full_match("^us.*")
starts_with La valeur commence par resource.labels.zone = starts_with("us")
ends_with La valeur se termine par resource.labels.zone = ends_with("b")
has_substring La valeur contient resource.labels.zone = has_substring("east")
one_of Une resource.labels.zone = one_of("asia-east1-b", "europe-north1-a")
!starts_with La valeur ne commence pas par resource.labels.zone != starts_with("us")
!ends_with La valeur ne se termine pas par resource.labels.zone != ends_with("b")
!has_substring La valeur ne contient pas resource.labels.zone != has_substring("east")
!one_of La valeur n'est pas une des valeurs suivantes resource.labels.zone != one_of("asia-east1-b", "europe-north1-a")