Règles d'alerte avec MQL

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Vous pouvez créer des règles d'alerte Monitoring dont la condition inclut une requête MQL. Les requêtes MQL pour les conditions d'alerte sont semblables aux autres requêtes MQL, à la différence qu'elles incluent également une opération d'alerte MQL.

Cette page présente les opérations d'alerte MQL et explique comment créer une règle d'alerte qui les utilise. Pour obtenir des informations générales sur les règles d'alerte Monitoring, consultez la page Comportement des règles d'alerte basées sur les métriques.

Opérations d'alerte MQL

Vous pouvez créer des règles d'alerte avec seuil et absence avec MQL.

Pour créer une règle d'alerte basée sur MQL, utilisez l'une des opérations d'alerte MQL suivantes dans votre requête :

  • Opération condition pour les alertes de seuil
  • Opération absent_for pour les alertes d'absence

Votre requête doit se terminer par l'une de ces opérations. Pour en savoir plus, consultez la section Alertes de la documentation de référence sur MQL.

Votre requête ne doit pas inclure une période spécifique c'est-à-dire une opération within.

Lorsque vous utilisez MQL pour créer une règle d'alerte, vous devez créer une requête MQL avec fetch, filter, group_by, etc. afin d'identifier la série temporelle cible. Cette partie de la requête est identique à une requête servant à récupérer des données de séries temporelles pour un graphique. Par exemple, la requête suivante extrait la valeur d'utilisation du processeur pour toutes les instances de VM Compute Engine dans n'importe quelle région du centre des États-Unis :

fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
| filter zone =~ 'us-central.*'

Cette requête génère une table de sortie. Pour créer une alerte, dirigez la table de sortie vers une opération d'alerte. L'opération d'alerte calcule les valeurs booléennes des valeurs de données dans la table de sortie générée par la requête précédant l'opération d'alerte.

L'opération d'alerte spécifie une expression permettant d'évaluer les données de la table d'entrée. Pour une condition de seuil, l'expression teste chaque point par rapport à un seuil, par exemple "La valeur est-elle inférieure à 0.5 ?".

Le système d'alerte Monitoring utilise les résultats de l'opération d'alerte pour déterminer si et quand une règle alerte est déclenchée. La section Configuration des alertes décrit le mode de prise de décision.

Alertes de seuil

Pour les alertes de seuil, utilisez l'opération condition. L'opération de condition prend une expression qui évalue une valeur par rapport à un seuil (par exemple, "La valeur est supérieure à 15 %") et renvoie une valeur booléenne.

L'opération condition nécessite que la table d'entrée soit alignée avec un intervalle d'alignement explicite. Pour aligner la table d'entrée avec un intervalle explicite, spécifiez un intervalle d'alignement sur une opération align — par exemple, align delta_gauge(5m) — ou utilisez une valeur temporelle group_by avec une fenêtre à durée flexible. L'exemple suivant illustre l'utilisation de group_by avec une opération sliding :

fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
| filter zone =~ 'us-central.*'
| group_by sliding(5m), mean(val())
| condition val() > .15 '10^2.%'

Comme le paramètre d'intervalle group_by par défaut est flexible, l'expression group_by de la requête précédente est identique à group_by 5m, mean(val()).

La condition teste chaque point de données de la table d'entrée alignée pour déterminer si la valeur d'utilisation dépasse le seuil de 15 %. La table résultant de l'opérateur condition contient deux colonnes de valeurs : une colonne booléenne qui enregistre le résultat de l'évaluation du seuil et une seconde contenant une copie de la colonne de valeurs utilization de la table d'entrée.

MQL vous permet de créer des libellés définis par l'utilisateur et de les associer aux incidents. Pour obtenir des exemples, consultez Ajouter des niveaux de gravité à une règle d'alerte.

La valeur d'utilisation du processeur est stockée sous forme d'utilisation fractionnelle. Les valeurs sont comprises entre 0.0 et 1.0. Le descripteur de métrique spécifie l'unité pour ces valeurs sous la forme 10^2.%, que le graphique affiche sous forme de pourcentage. Les unités du seuil doivent être compatibles. Nous exprimons donc le seuil sous la forme .15 '10^2.%.

Les unités des types de métriques sont répertoriées dans la table appropriée des types de métriques. Pour le type de métrique compute.googleapis.com/instance/cpu/utilization, consultez la table compute.

Pour plus d'informations sur les unités dans MQL, consultez la section Unités de mesure.

Alertes d'absence

Pour les alertes d'absence, utilisez l'opération absent_for, qui accepte une durée pendant laquelle les données doivent être manquantes. Par exemple, les tests suivants permettent de déterminer si des données ont été absentes des zones du centre des États-Unis pendant huit heures :

fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
| filter zone =~ 'us-central.*'
| absent_for 8h

L'opération absent_for ne prend qu'un argument de durée, qui indique la durée pendant laquelle les données doivent être absentes pour répondre à la condition.

Les données sont considérées comme absentes si elles se sont affichées au cours de la dernière période de 24 heures, mais pas pendant la durée définie, pour cet exemple, au cours des huit dernières heures.

Une requête absent_for crée une table de sortie avec des valeurs alignées, à l'aide de l'alignement par défaut ou d'une opération every après l'opération absent_for.

La table de sortie contient deux colonnes.

  • La première est la colonne active, qui enregistre les résultats booléens pour l'absence de données. Une valeur true signifie qu'il y a eu un point d'entrée au cours des dernières 24 heures et aucun au cours de la période concernée.

  • La second colonne correspond à la colonne signal. Si la table d'entrée comporte des colonnes de valeurs, la colonne signal contient la valeur de la première colonne de valeur du point d'entrée le plus récent. Si la table d'entrée ne comporte aucune colonne de valeurs, la colonne signal contient le nombre de minutes écoulées depuis l'enregistrement du dernier point d'entrée. Vous pouvez facilement forcer ce cas, comme illustré dans l'exemple suivant :

    fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
    | filter zone =~ 'us-central.*'
    | value []
    | absent_for 8h
    

    Dans l'exemple précédent, l'opération value [] supprime les colonnes de valeur de sa table d'entrée. Par conséquent, la colonne signal de la table créée par l'opération absent_for contient le nombre de minutes écoulées depuis que le dernier point d'entrée a été enregistré.

Configuration des alertes

En plus de la requête MQL, une condition de règle d'alerte inclut deux autres valeurs :

  • Le nombre de séries temporelles d'entrée qui doivent remplir la condition. La valeur peut être l'une des suivantes :
    • Une seule série temporelle,
    • Un nombre spécifique de séries temporelles,
    • Un pourcentage de séries temporelles,
    • Toutes les séries temporelles,
  • La durée de l'état d'alerte, c'est-à-dire la durée pendant laquelle la condition d'alerte doit évaluer en continu sur true.

Lorsque la requête d'alerte renvoie en continu la valeur true pour la durée spécifiée d'une série temporelle spécifique, cette série temporelle est considérée comme active. Lorsque le nombre spécifié de séries temporelles est actif, la règle d'alerte est déclenchée, et une alerte est générée pour chaque série temporelle active. Pour en savoir plus sur l'évaluation des règles d'alerte, consultez la section Comportement des règles d'alerte basées sur les métriques.

Si vous utilisez MQL dans une condition, il doit s'agir de la seule condition de la règle. Vous ne pouvez pas utiliser plusieurs conditions dans les règles d'alerte basées sur MQL.

Créer des règles d'alerte MQL (console)

Pour créer une règle d'alerte basée sur MQL à partir de Google Cloud Console, procédez comme suit:

  1. Dans Google Cloud Console, sélectionnez Monitoring ou cliquez sur le bouton suivant:
    Accéder à Monitoring

  2. Dans le volet de navigation, sélectionnez Alertes.

  3. Pour ajouter ou mettre à jour des canaux de notification, cliquez sur Modifier les canaux de notification. Ajoutez vos canaux de notification, puis revenez à la page Alertes.

    Pour plus de détails sur vos choix de canaux de notification, consultez la page Options de notification.

  4. Sur la page Alertes, cliquez sur Créer une règle.

  5. Dans la barre d'outils, sélectionnez MQL.

    L'éditeur de requête s'ouvre.

  6. Saisissez la requête qui sélectionne les données que vous souhaitez surveiller dans l'éditeur de requête. La requête suivante extrait les séries temporelles et les aligne sur un intervalle de cinq minutes :

    fetch gce_instance
    | metric 'compute.googleapis.com/instance/cpu/utilization'
    | group_by 5m, mean(val())
    

    Si vous cliquez sur Run Query (Exécuter la requête) à ce stade, un graphique s'affiche. Pour un projet, la requête ci-dessus a généré le résultat suivant :

    Graphique d'une condition d'alerte avant la spécification de l'alerte.

  7. Ajoutez une clause d'alerte à la requête en utilisant l'une des opérations suivantes :

    • L'opérateur condition, pour une alerte de seuil
    • L'opérateur absent_for, pour une alerte d'absence

    Pour plus d'informations sur ces opérations d'alerte, consultez la section Alertes dans la documentation de référence sur MQL.

    L'exemple suivant utilise l'opération condition pour spécifier un seuil :

    fetch gce_instance
    | metric 'compute.googleapis.com/instance/cpu/utilization'
    | group_by 5m, mean(val())
    | condition val() > .05
    

    Si vous cliquez sur Exécuter la requête à ce stade, le graphique ajoute une ligne de seuil pour la condition, comme illustré dans la capture d'écran suivante :

    Graphique d'une condition d'alerte après la spécification de l'alerte.

  8. Si vous n'avez pas encore exécuté votre requête, cliquez sur Exécuter la requête.

  9. Cliquez sur Suivant et configurez le déclencheur d'alerte:

    1. Les déclencheurs d'alerte vous permettent de spécifier le nombre de séries temporelles renvoyées par la requête qui doit satisfaire l'opération d'alerte avant que la règle d'alerte ne puisse être déclenchée. Vous avez le choix parmi les critères suivants:

      • Une seule série temporelle,
      • Un nombre spécifique de séries temporelles,
      • Un pourcentage de la série temporelle,
      • Toutes les séries temporelles.
    2. (Facultatif) Développez le menu Options avancées et sélectionnez la fenêtre de test. Ce champ définit la durée pendant laquelle la condition doit être remplie avant que la règle d'alerte ne soit déclenchée. La fenêtre de test est différente de la fenêtre d'alignement utilisée dans la requête MQL. Pour en savoir plus sur la relation entre ces valeurs, consultez la section Durée et durée de l'alignement.

    3. Saisissez un nom pour la condition, puis cliquez sur Suivant.

  10. Facultatif: Configurez les notifications, et ajoutez des libellés de règle et de la documentation.

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

  12. Cliquez sur Create policy (Créer une régle).

    Les requêtes associées aux conditions des règles d'alerte ne sont pas converties au format strict.

Pour connaître la procédure complète, consultez la page Gérer les règles d'alerte.

Créer des règles d'alerte MQL (API)

Si vous utilisez l'API, créez une condition du type MonitoringQueryLanguageCondition lorsque vous configurez la règle. Pour en savoir plus, consultez la section Créer des conditions pour les règles d'alerte.

Transmettez ensuite la règle à alertPolicies.create, comme d'habitude.