Surveiller les résultats de vos requêtes SQL à l'aide d'une règle d'alerte

Ce document explique comment créer une règle d'alerte pour surveiller les résultats d'une requête SQL. La règle d'alerte vous avertit lorsque le résultat de la requête remplit les conditions que vous spécifiez. Par exemple, vous pouvez configurer une règle d'alerte pour être averti lorsqu'au moins 25 % les entrées de journal d'une période donnée ont la gravité ERROR.

Vous pouvez utiliser trois approches différentes pour recevoir une notification lorsqu'un contenu ou un modèle apparaît dans vos données de journal :

  • Pour rechercher une expression spécifique dans des entrées de journal individuelles, créez une règle d'alerte basée sur les journaux. Utilisez ces règles d'alerte lorsque vous souhaitez être informé d'événements liés à la sécurité, par exemple.

  • Pour surveiller les événements de vos données d'entrée de journal, vous pouvez créer un métrique basée sur les journaux, puis créez une règle d'alerte pour surveiller la métrique. Ces types de règles d'alerte sont efficaces lorsque vous souhaitez surveiller les tendances des données d'entrée de journal au fil du temps. Toutefois, elles ne sont pas aussi efficaces si vous ne prévoyez que quelques événements.

  • Pour effectuer une analyse globale de vos données d'entrée de journal, puis pour surveiller les résultats, écrivez une requête SQL dans Log Analytics pour analyser vos données d'entrée de journal. Ensuite, créez une règle d'alerte pour surveiller le tableau des résultats de la requête. Ce type de règle d'alerte est appelé règle d'alerte basée sur SQL.

    Les règles d'alerte basées sur SQL sont particulièrement efficaces pour évaluer des valeurs exactes sur plusieurs entrées de journal. Si vous souhaitez évaluer des entrées de journal individuelles et que vous n'avez pas besoin de surveiller des valeurs exactes, créez des règles d'alerte basées sur les journaux qui utilisent le langage de requête de journalisation.

Le reste de ce document explique comment utiliser des règles d'alerte basées sur SQL.

Pour obtenir des informations générales sur l'Analyse de journaux, consultez Présentation des requêtes et de l'affichage des journaux

Fonctionnement des règles d'alerte

Une règle d'alerte décrit les circonstances dans lesquelles vous souhaitez être averti et comment vous souhaitez être averti en cas d'incident. Une règle d'alerte peut surveiller les résultats d'une requête SQL. Lorsque le résultat de la requête répond l'état du d'alerte, Cloud Monitoring crée un incident, puis envoie des notifications concernant l'incident par le biais de canaux de notification ;

Un incident est un enregistrement des données ayant entraîné la satisfaction de la condition, ainsi que d'autres informations pertinentes. Ces informations peuvent vous aider à résoudre les problèmes à l'origine de l'incident. Vous pouvez consulter l'incident à l'aide de la console Google Cloud. Pour en savoir plus, consultez la page Incidents pour les règles d'alerte basées sur SQL.

Composants des règles d'alerte

Une règle d'alerte basée sur SQL contient une condition et un calendrier :

  • La condition contient la requête, qui est une requête SQL qui interroge une vue de journal. La condition définit également les circonstances dans lesquelles le résultat de la requête ou Monitoring crée un incident.

  • La planification définit la fréquence à laquelle la règle d'alerte exécute sa requête. Le calendrier définit également la taille de la période d'analyse, qui est un filtre qui sélectionne uniquement les entrées de journal reçues depuis la dernière fois que la requête a été évaluée. Par exemple, si vous définissez la planification sur 60 minutes, la requête est exécutée toutes les 60 minutes à l'aide d'une fenêtre d'analyse qui sélectionne les 60 dernières minutes d'entrées de journal.

Types d'évaluation pour les règles d'alerte SQL

Les conditions qui surveillent un résultat SQL sont compatibles avec deux types d'évaluation:

  • Seuil de nombre de lignes : la condition est remplie lorsque le nombre de lignes dans le résultat de la requête est supérieur, égal ou inférieur à une valeur seuil.

    Par exemple, supposons que vous souhaitiez recevoir une notification lorsque plus de 50 entrées de journal de la période d'analyse présentent une gravité supérieure à 200. Vous créez une requête qui renvoie les entrées de journal dont la gravité est supérieure à 200. Vous configurez ensuite une condition, sélectionnez Seuil du nombre de lignes, puis définissez le seuil sur 50.

  • Booléen : la condition est remplie lorsqu'une colonne booléenne spécifique du tableau des résultats de la requête contient une ligne avec une valeur de true.

    Par exemple, supposons que vous souhaitiez recevoir une notification lorsque plus de 25 % des entrées de journal de la période d'analyse ont un niveau de gravité ERROR. Vous créez une requête qui calcule le pourcentage d'entrées de journal dont le niveau de gravité est ERROR. Le résultat de la requête écrit true à la colonne notify lorsque ce pourcentage dépasse 25%. Ensuite, vous créez une condition, définissez le type sur Booléen, puis configurez le pour surveiller la colonne notify.

Les règles d'alerte qui surveillent un résultat de requête SQL ne doivent comporter qu'une seule condition.

Règles d'alerte et BigQuery

Lorsqu'une règle d'alerte exécute une requête SQL, celle-ci est exécutée à l'aide de ressources Emplacements BigQuery dans le projet Google Cloud où d'une règle d'alerte définie. Pour en savoir plus, consultez Utiliser les réservations d'emplacements.

Pour qu'une règle d'alerte utilise des emplacements BigQuery réservés afin d'interroger une vue de journal, celle-ci doit être configurée pour avoir un ensemble de données associé. Les ensembles de données associés vous permettent d'exécuter des fonctions BigQuery sur les données renvoyées par votre requête SQL. Pour en savoir plus, consultez Créez un ensemble de données BigQuery associé.

Avant de commencer

  1. Pour obtenir les autorisations nécessaires pour utiliser l'Analyse de journaux, demandez à votre administrateur de vous accorder le les rôles IAM suivants sur vos buckets de journaux ou vos vues de journaux:

    • Pour interroger les buckets de journaux _Required et _Default: Visionneuse de journaux (roles/logging.viewer).
    • Pour interroger toutes les vues de journaux d'un projet, procédez comme suit: Accesseur de vues de journaux (roles/logging.viewAccessor).
    • Pour interroger les journaux dans une vue de journal spécifique: Créez une stratégie IAM pour la vue de journaux ou limitez le rôle d'accesseur de vue de journaux (roles/logging.viewAccessor) à une certaine vue de journal. Pour en savoir plus, consultez Contrôler l'accès à une vue de journal.

    Pour en savoir plus sur les rôles supplémentaires, consultez la section Rôles de journalisation.
  2. Pour les vues de journaux que vous souhaitez interroger, accédez à la page Stockage des journaux. et vérifier que les buckets de journaux qui stockent ces vues de journaux sont mis à niveau utiliser l'Analyse de journaux. Si nécessaire, mettez à niveau le bucket de journaux.
  3. Dans la console Google Cloud, accédez à la page Stockage des journaux.

    Accéder à la page Stockage des journaux

    Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Logging.

  4. Pour autoriser l'exécution de requêtes sur des emplacements BigQuery réservés, procédez comme suit :
    1. Si le bucket de journaux que vous prévoyez d'interroger ne comporte pas d'ensemble de données associé, créez-en un.
    2. Configurez des emplacements BigQuery réservés et attribuez-les à votre projet Google Cloud.

  5. Pour obtenir les autorisations nécessaires pour créer et gérer des règles d'alerte basées sur SQL, demandez à votre administrateur de vous accorder les rôles IAM suivants :

    Pour plus d'informations sur les autorisations d'accès à un ensemble de données, consultez la page Accorder l'accès à un ensemble de données.

  6. Assurez-vous que le compte de service Monitoring existe et qu'il dispose des rôles suivants :

    1. Rôle d'agent de service Monitoring (monitoring.notificationServiceAgent) sur votre projet.
    2. Rôle de lecteur de données BigQuery (roles/bigquery.dataViewer) sur l'ensemble de données associé.

    Si le compte de service de surveillance n'existe pas, consultez la section Dépannage : Aucun compte de service de surveillance.

  7. Configurez les canaux de notification que vous souhaitez utiliser pour recevoir en cas d'incident. À des fins de redondance, nous vous recommandons de créer plusieurs types de canaux de notification. Pour en savoir plus, consultez la page Créer et gérer des canaux de notification.

Créer une règle d'alerte basée sur SQL

Pour créer une règle d'alerte basée sur SQL, procédez comme suit:

console Google Cloud

  1. Dans la console Google Cloud, accédez à la page Analyse de journaux:

    Accéder à l'Analyse de journaux

    Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Logging.

  2. Sur la page Log Analytics, dans l'éditeur de requête, saisissez une requête SQL pour une vue des journaux.

    Pour en savoir plus sur l'écriture de requêtes SQL pour les vues de journaux, consultez la section Interroger une vue de journal.

  3. Dans la barre d'outils, cliquez sur Exécuter dans BigQuery.

    Log Analytics exécute votre requête sur le moteur BigQuery et affiche les résultats dans le tableau Résultats.

    Si Exécuter sur BigQuery ne s'affiche pas, cliquez sur Sélectionner un moteur de requêtes puis cliquez sur BigQuery. Le bouton Exécuter la requête devient Exécuter sur BigQuery

  4. Dans le tableau Résultats de la page Analyse de journaux, cliquez sur  Créer une alerte

    La page Analyse de journaux affiche la fenêtre Créer une règle d'alerte SQL, qui affiche votre requête dans la section Requête SQL.

  5. Dans la section Condition d'alerte, configurer la condition et la programmation de votre règle d'alerte.

  6. Configurez les détails de votre règle d'alerte.

    1. (Facultatif) Ajoutez des étiquettes de règles d'alerte et documentation.

    2. Ajoutez des canaux de notification, puis cliquez sur Suivant.

  7. Vérifiez votre règle d'alerte, puis créez-la en cliquant sur Enregistrer.

API Cloud Monitoring

Utilisez la méthode alertPolicies.create pour de créer des règles d'alerte de manière automatisée. Le type Condition de votre règle d'alerte doit être conditionSql, qui est une instance de SqlCondition. Ce type de condition permet de définir les conditions de votre règle d'alerte avec SQL.

Pour définir le calendrier, définissez une valeur periodicity pour minutes, hours ou days. . Par exemple, si vous souhaitez que la requête s'exécute toutes les 12 heures, définissez la périodicité du champ hours sur 12.

Pour définir la condition, utilisez les champs suivants:

  • boolean_test: configure la règle d'alerte afin que sa condition soit remplie Lorsqu'une ligne d'une colonne booléenne dans la table des résultats de la requête contient la valeur "true" .
  • row_count_test : configure la stratégie d'alerte afin que sa condition soit remplie lorsque le nombre de lignes dans le tableau des résultats de la requête atteint un certain seuil.

Pour obtenir la liste complète des champs et des définitions, consultez SqlCondition dans la documentation de l'API Cloud Monitoring.

Pour plus d'informations sur l'API Monitoring pour les règles d'alerte, consultez la page Gérer des règles d'alerte à l'aide d'API.

Limites

Lorsqu'une règle d'alerte exécute une requête SQL programmée, la règle d'alerte introduit un délai de 15 minutes pour laisser le temps aux entrées de journal de se propager dans le bucket de journaux. Si les entrées de journal mettent plus de 15 minutes à arriver, la règle d'alerte ne les évalue pas.

L'introduction d'un délai de 15 minutes a un impact sur le temps écoulé entre le moment où une entrée de journal est générée et celui où la surveillance détecte qu'une condition est remplie. Par exemple, supposons que vous ayez une requête SQL planifiée pour s'exécuter toutes les 30 minutes. Lorsque la règle d'alerte évalue périodiquement il interroge les entrées de journal avec des horodatages compris entre 15 et 45 Il y a minutes.

Pour connaître les limites associées aux règles d'alerte, consultez la section Limites de surveillance.

Tarifs

Pour en savoir plus sur les tarifs, consultez les documents suivants :

Étape suivante

Pour en savoir plus sur la création de graphiques à partir de vos données Log Analytics, consultez Graphiquer les résultats de requête avec Log Analytics.