Configurer des règles d'alerte basées sur les journaux

Vous pouvez configurer une règle d'alerte pour être averti dès qu'un message spécifique apparaît dans les journaux inclus. Par exemple, si vous souhaitez savoir enregistre un message spécifique d'accès aux données, vous pouvez une notification lorsque le message s'affiche. Ces types de règles d'alerte sont appelés Règles d'alerte basées sur les journaux. Ce document explique comment effectuer les tâches suivantes : à l'aide de la console Google Cloud et de l'API Cloud Monitoring:

  • Créer et tester une règle d'alerte basée sur les journaux
  • Modifiez une règle d'alerte basée sur les journaux.
  • Supprimez une règle d'alerte basée sur les journaux.

Avant de commencer

Consultez la page Comparaison des alertes pour déterminer si les alertes sont les règles d'alerte sont adaptées aux données de vos journaux. Exemple :

  • Les règles d'alerte basées sur les journaux ne fonctionnent pas sur les journaux exclus.

  • Vous ne pouvez pas utiliser de règles d'alerte basées sur les journaux pour déterminer des nombres à partir de vos journaux. Pour le calcul des décomptes, vous devez utiliser les métriques basées sur les journaux.

Pour créer et gérer des règles d'alerte basées sur les journaux, votre rôle Identity and Access Management doit incluent les autorisations décrites dans Autorisations pour les règles d'alerte basées sur les journaux.

Créer une règle d'alerte basée sur les journaux à l'aide de l'explorateur de journaux

Vous pouvez créer une règle d'alerte basée sur les journaux depuis la page Explorateur de journaux. dans la console Google Cloud ou via l'API Monitoring. Cette section explique comment créer des règles d'alerte basées sur les journaux à l'aide de l'explorateur de journaux. Pour en savoir plus sur l'API Monitoring, consultez Créez une règle d'alerte basée sur les journaux à l'aide de l'API Monitoring.

L'interface de l'explorateur de journaux vous guide à travers les étapes suivantes:

  • Saisissez un nom et une description pour la règle d'alerte.
  • Choisissez les journaux pour lesquels vous souhaitez recevoir une notification.
  • Définissez le délai entre les notifications.
  • Définissez l'heure de fermeture automatique des incidents.
  • Indiquez les personnes à avertir.

Par exemple, supposons que vous disposiez d'une application qui écrit une entrée de journal syslog avec une gravité définie sur NOTICE lorsque l'application modifie une adresse réseau. Les entrées de journal des modifications d'adresse réseau incluent une charge utile JSON semblable à celle-ci :

"jsonPayload": {
  "type": "Configuration change",
  "action": "Set network address",
  "result": "IP_ADDRESS",
}

Vous souhaitez créer une règle d'alerte basée sur les journaux Lorsqu'une adresse IPv4 non valide apparaît dans le champ jsonPayload.result des entrées de journal dans syslog avec un niveau de gravité NOTICE.

Pour créer cette règle d'alerte, procédez comme suit:

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

    Accéder à l'explorateur 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. Utilisez le volet Requête pour créer une requête correspondant au message souhaité. à utiliser dans votre règle d'alerte basée sur les journaux.

    Par exemple, pour rechercher dans le journal syslog des entrées de journal dont le niveau de gravité est NOTICE et qui possèdent des adresses IP non valides, vous pouvez utiliser la requête suivante :

    log_id("syslog")
    severity = "NOTICE"
    jsonPayload.result !~ "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.|$)){4}$"
    

    Utilisez Exécuter la requête dans le volet Résultats de requête pour valider la requête.

  3. Dans l'en-tête du volet Résultats de la requête, cliquez sur  Créer une alerte Lorsque la fenêtre l'option Créer une alerte peut s'afficher dans le menu Actions .

  4. Dans le volet Détails de l'alerte, attribuez un nom à la règle d'alerte et description:

    1. Saisissez un nom pour votre règle d'alerte dans le champ Alert Policy Name (Nom de la règle d'alerte). Par exemple : "Adresse réseau: valeur IPv4 non valide".

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

    3. Saisissez une description pour votre règle d'alerte. Vous pouvez également inclure informations qui pourraient aider le destinataire d’une notification à diagnostiquer le problème. La chaîne suivante résume le motif de la notification:

      Log-based alerting policy in project ${project} detected an invalid IPv4 value.
      

      Pour obtenir des informations sur la mise en forme et la personnalisation du contenu de ce champ, consultez la section Utiliser Markdown et les variables dans les modèles de documentation.

  5. Pour passer à l'étape suivante, cliquez sur Suivant.

  6. Dans le volet Sélectionner les journaux à inclure dans l'alerte, vérifiez la requête et les résultats en cliquant sur Prévisualiser les journaux.

    Nous vous recommandons de créer la requête dans le volet Requête de l'explorateur de journaux. La requête que vous avez créée dans le volet Requête s'affiche également dans ce volet ; par exemple :

    log_id("syslog")
    severity = "NOTICE"
    jsonPayload.result !~ "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.|$)){4}$"
    

    Si nécessaire, vous pouvez modifier la requête dans ce volet. Si vous modifiez le paramètre requête, puis vérifiez les résultats en cliquant sur Prévisualiser les journaux.

  7. Cliquez sur Suivant.

  8. Sélectionnez le délai minimal entre les notifications. Cette valeur vous permet de contrôler le nombre de notifications que vous recevez Surveiller si cette condition est remplie plusieurs fois. Pour cet exemple, sélectionnez 5 min parmi les options.

  9. (Facultatif) Sélectionnez la durée de fermeture automatique de l'incident. Par défaut, l'incident la durée de fermeture automatique est définie sur sept jours.

  10. Cliquez sur Suivant.

  11. Sélectionnez un ou plusieurs canaux de notification pour votre règle d'alerte. Pour cet exemple, sélectionnez un canal de notification par e-mail.

    Si vous avez déjà configuré un canal de notification par e-mail, vous pouvez le sélectionner dans la liste. Si ce n'est pas le cas, cliquez sur Gérer les canaux de notification et ajoutez un canal de notification par e-mail. Pour en savoir plus sur la création de notifications consultez l'article Créer et gérer des canaux de notification

  12. Cliquez sur Enregistrer.

Votre règle d'alerte basée sur les journaux est maintenant prête à être testée.

Tester l'exemple de règle d'alerte basée sur les journaux

Pour tester la règle d'alerte que vous avez créée, vous pouvez écrire manuellement une entrée de journal qui correspond à la requête. Pour écrire l'entrée de journal, procédez comme suit:

  1. Configurez l'entrée de journal suivante en modifiant la variable PROJECT_ID à l'ID de votre projet:

    {
      "entries": [
      {
        "logName": "projects/PROJECT_ID/logs/syslog",
        "jsonPayload": {
          "type": "Configuration change",
          "action": "Set network address",
          "result": "999.027.405.1",
        },
        "severity": "NOTICE",
        "resource": {
          "type": "generic_task",
          "labels" : {
            "project_id": "PROJECT_ID",
            "location": "us-east1",
            "namespace": "fake-task-2",
            "job": "write-log-entry",
            "task_id": "11",
          },
        },
      },
      ],
    }
    
  2. Accédez à la page de référence logEntries.write ou cliquez sur le bouton suivant :

    Accéder à logEntries.write

  3. Copiez l'entrée de journal que vous avez configurée précédemment.

  4. Dans le volet Essayer cette API, procédez comme suit :

    1. Remplacer le contenu du champ Corps de la requête dans APIs Explorer par l'entrée de journal que vous avez copiée à l'étape précédente.

    2. Cliquez sur Exécuter. Si vous y êtes invité, suivez la procédure d'authentification.

      Si l'appel logEntries.write aboutit, vous obtenez un code de réponse HTTP 200 et un corps de réponse vide, {}. Pour en savoir plus sur l'explorateur d'API, consultez la page Utiliser l'explorateur d'API dans la documentation de Monitoring. L'explorateur d'API fonctionne de la même manière avec l'API Logging.

L'entrée de journal correspond au filtre spécifié pour la règle d'alerte comme suit:

  • La valeur logName spécifie le journal syslog qui se trouve dans votre projet Google Cloud.
  • La valeur severity de cette entrée de journal est NOTICE.
  • La valeur jsonPayload.result n'est pas une adresse IPv4 valide.

Une fois l'entrée de journal écrite, la séquence suivante se produit :

  • La nouvelle entrée de journal apparaît dans l'explorateur de journaux. L’entrée de journal rencontre la condition de la règle d'alerte.
  • Un incident est ouvert dans Cloud Monitoring.
  • Vous recevez une notification pour l'incident. Si vous avez configuré une adresse e-mail canal de notification, la notification se présente sous la forme capture d'écran suivante:

    L'exemple de règle d'alerte basée sur les journaux génère une notification par e-mail.

Vous pouvez cliquer sur Afficher l'incident dans l'e-mail pour afficher l'incident dans Cloud Monitoring. Pour en savoir plus sur les incidents, consultez Gérez les incidents pour les règles d'alerte basées sur les journaux.

Autres scénarios : Alertes sur les journaux d'audit

L'exemple de la section intitulée Créer une règle d'alerte basée sur les journaux artificielle ; vous ne créez généralement pas de règle d'alerte, puis vous écrire des entrées de journal qui répondent à la condition de la règle d'alerte. Les entrées de journal sont généralement écrites par des applications ou d'autres services. Mais la source des entrées de journal peu importe. Pour les règles d'alerte basées sur les journaux, l'important est la requête que vous utilisez pour sélectionner les entrées de journal.

Les sections suivantes décrivent des scénarios réalistes pour les alertes basées sur les journaux en fonction du contenu des journaux d'audit. Chaque scénario montre comment créer une requête qui sélectionne les entrées de journal d'audit appropriées. Sinon, la procédure de création des règles d'alerte basées sur les journaux est identique à celui présenté dans la section Créer une alerte basée sur les journaux.

Règles d'alerte qui surveillent l'accès humain aux secrets

Supposons que votre projet stocke des secrets dans Secret Manager, et que certains de ces secrets ne sont destinés qu'aux comptes de service. Sauf dans des circonstances inhabituelles, les utilisateurs humains n'accèdent jamais à ces secrets.

Si vous avez activé les journaux d'audit pour Secret Manager, puis chacun une tentative réussie d'accès à un secret crée une entrée de journal d'audit. Chaque entrée inclut le nom du secret et l'identité de l'appelant.

Vous pouvez créer une règle d'alerte basée sur les journaux qui vous avertit lorsqu'un utilisateur qui accède à un secret.

Vous trouverez ci-dessous un extrait d'une entrée de journal d'audit écrite par Secret Manager. L'extrait montre les champs utiles pour créer la requête d'une alerte basée sur les journaux :

{
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "serviceName": "secretmanager.googleapis.com",
    "methodName": "google.cloud.secretmanager.v1.SecretManagerService.AccessSecretVersion",
    "authenticationInfo": {
      "principalEmail": "my-svc-account@PROJECT_ID.iam.gserviceaccount.com",
      "serviceAccountDelegationInfo": [],
      "principalSubject": "serviceAccount:my-svc-account@PROJECT_ID.iam.gserviceaccount.com"
    },
    ...
  },
  ...
}

Les sous-champs protoPayload suivants présentent un intérêt particulier:

  • @type : indique que cette entrée de journal est une entrée de journal d'audit.
  • serviceName : enregistre le service qui a écrit l'entrée de journal d'audit. Utilisez ce champ pour identifier les entrées écrites par Secret Manager.
  • methodName : identifie la méthode pour laquelle cette entrée de journal d'audit a été écrite. Utilisez ce champ pour identifier l'action qui a entraîné la création de l'entrée de journal. Dans cet exemple, il s'agit de la méthode AccessSecretVersion.
  • authenticationInfo.principalEmail : enregistre le compte qui a appelé la méthode dans le champ methodName. La valeur attendue pour ce champ est un compte de service, qui se termine par gserviceaccount.com.

Pour rechercher les entrées de journal d'un utilisateur humain, consultez les entrées de journal d'audit écrites par Secret Manager. Vous devez rechercher les entrées de journal dans lesquelles la méthode AccessSecretVersion a été appelée par un compte principal qui ne se termine pas par gserviceaccount.com. La requête suivante isole ces entrées de journal :

protoPayload.@type = "type.googleapis.com/google.cloud.audit.AuditLog"
protoPayload.serviceName = "secretmanager.googleapis.com"
protoPayload.methodName =~ "AccessSecretVersion$"
protoPayload.authenticationInfo.principalEmail !~ "gserviceaccount.com$"

Pour créer une règle d'alerte basée sur les journaux concernant l'accès manuel aux secrets, utilisez cette dans le volet Choose logs to include in the alert (Choisir les journaux à inclure dans l'alerte).

Règles d'alerte pour la surveillance des événements de déchiffrement

L'analyse de l'exemple précédent peut être adaptée à d'autres services. Par exemple, si vous utilisez Cloud Key Management Service pour chiffrer et déchiffrer des données des données sensibles, vous pouvez utiliser les journaux d'audit générés par Cloud KMS pour détecter un utilisateur humain déchiffre une valeur.

Pour rechercher les entrées de journal correspondant à un déchiffrement effectué par un utilisateur humain, recherchez les entrées de journal d'audit écrites par Cloud KMS. Vous devez rechercher les entrées de journal dans lesquelles la méthode Decrypt a été appelée par un compte principal qui ne se termine pas par gserviceaccount.com (ce qui indique un compte de service). La requête suivante isole ces entrées de journal :

protoPayload.@type = "type.googleapis.com/google.cloud.audit.AuditLog"
protoPayload.serviceName = "cloudkms.googleapis.com"
protoPayload.methodName = "Decrypt"
protoPayload.authenticationInfo.principalEmail !~ "gserviceaccount.com$"

Pour créer une règle d'alerte basée sur les journaux concernant le déchiffrement effectué par un utilisateur humain, Utilisez cette requête dans le volet Choose logs to include in the alert (Choisir les journaux à inclure dans l'alerte).

Gérer les règles d'alerte basées sur les journaux dans Monitoring

Vous pouvez afficher, modifier et supprimer les règles d'alerte basées sur les journaux à l'aide du la console Google Cloud pour Monitoring ou à l'aide API Monitoring. Ce document explique comment gérer des règles d'alerte à l'aide de la console Google Cloud. Pour plus d'informations sur l'utilisation de l'API Monitoring pour gérer les règles d'alerte, consultez Gérer les règles d'alerte à l'aide de l'API

Pour afficher la liste de toutes les règles d'alerte de votre projet Google Cloud, effectuez l'une des opérations suivantes :

  • Pour naviguer depuis Logging :

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

      Accéder à l'explorateur 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. Dans l'en-tête du volet Résultats de la requête, Actions et sélectionnez Gérer les alertes.

  • Pour naviguer depuis Monitoring :

    1. Dans la console Google Cloud, accédez à la page Alertes :

      Accéder à l'interface des alertes

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

    2. Pour afficher toutes les règles et activer le filtrage, accédez au volet Policies (Règles) : cliquez sur Afficher toutes les règles.

Ces deux actions vous permettent d'accéder aux règles Monitoring qui répertorie toutes les règles d'alerte de votre projet Google Cloud.

Pour restreindre les règles d'alerte répertoriées, ajoutez des filtres. Chaque filtre est composé d'un nom et d'une valeur. Par exemple : vous pouvez définir la valeur comme étant une correspondance exacte d'un nom de stratégie, ou une correspondance partielle. Les correspondances ne sont pas sensibles à la casse. Si vous spécifiez plusieurs filtres, ils sont implicitement joints. par un AND logique, sauf si vous insérez un filtre OR. La capture d'écran suivante présente les règles d'alerte activées et créés après le 1er janvier 2021:

Liste des règles d'alerte actives qui ont été créées après le 1er janvier 2021.

Sur la page Policies (Règles), vous pouvez modifier, supprimer, copier, activer ou désactiver les règles d'alerte :

  • Pour modifier ou copier une règle, cliquez sur Plus d'options, et sélectionnez une option. La modification et la copie d'une stratégie sont semblables à celles décrites dans la section Créez une règle d'alerte basée sur les journaux. Vous pouvez modifier et, dans certains cas, supprimer les valeurs dans les champs. Lorsque vous avez terminé, cliquez sur Enregistrer.

    Vous pouvez également modifier une règle d'alerte basée sur les journaux en cliquant sur son nom dans la liste des stratégies.

  • Pour supprimer une règle, cliquez sur Plus d'options , puis sélectionnez Supprimer. Dans la boîte de dialogue de confirmation, sélectionnez Delete (Supprimer).

  • Pour activer ou désactiver la règle d'alerte, cliquez sur le bouton situé sous l'en-tête Enabled (Activé).

Créer une règle d'alerte basée sur les journaux à l'aide de l'API Monitoring

Vous pouvez créer des règles d'alerte basées sur les journaux en utilisant API Monitoring. Vous fournissez à l'API Monitoring les mêmes informations que lorsque vous utilisez l'explorateur de journaux dans la console Google Cloud:

  • Nom et description de la règle d'alerte.
  • Les journaux pour lesquels vous souhaitez recevoir une notification.
  • Le délai entre les notifications.
  • l'heure de fermeture automatique des incidents ;
  • Personne(s) à avertir.

Pour créer des règles d'alerte à l'aide de l'API Monitoring, créez un objet AlertPolicy et envoyez-le à la méthode alertPolicies.create.

Pour pouvoir utiliser l'API Monitoring, vous devez l'activer et être autorisé à l'utiliser. Pour en savoir plus, consultez la documentation suivante :

Structure des règles d'alerte

L'API Monitoring représente une règle d'alerte en utilisant le paramètre Structure de AlertPolicy. La structure AlertPolicy comporte plusieurs structures intégrées, dont une description de la condition de la règle d'alerte. Les règles d'alerte basées sur les journaux présentent les différences suivantes par rapport aux règles d'alerte basées sur les métriques :

  • Vous décrivez la condition à l'aide du type de condition LogMatch. Les règles d'alerte basées sur des métriques utilisent différents types de conditions.
  • Une règle d'alerte basée sur les journaux ne peut avoir qu'une seule condition.
  • Vous spécifiez le délai entre les notifications et la clôture automatique de l'incident période en incluant une structure AlertStrategy. Les règles d'alerte basées sur les métriques n'incluent pas de délai entre les notifications.

Cette section explique comment créer une règle d'alerte basée sur les journaux. Ces règles diffèrent des règles d'alerte basées sur les métriques dans le type de condition que vous utilisez. Pour les règles d'alerte basées sur les journaux, le type de condition est LogMatch. Lorsque vous utilisez l'API Monitoring pour gérer les règles d'alerte, aucune différence dans la façon dont vous répertoriez, modifiez ou supprimez les règles basées sur les métriques et les journaux. La page Gérer les règles d'alerte à l'aide d'API explique comment créer, de répertorier, modifier et supprimer une règle d'alerte à l'aide de l'API Monitoring.

Concevoir la règle d'alerte

La section intitulée Créer une règle d'alerte basée sur les journaux à l'aide de l'explorateur de journaux décrit une façon de créer une règle d'alerte basée sur les journaux. Cette section vous montre comment créer Une règle d'alerte basée sur les journaux qui vous avertit lorsqu'une entrée de journal syslog présente une gravité niveau NOTICE et une adresse IPv4 non valide dans jsonPayload.result .

Pour créer la même règle d'alerte basée sur les journaux en utilisant de l'API Monitoring, vous Créez un objet AlertPolicy qui ressemble à la structure JSON suivante:

{
  "displayName": "Network address: invalid IPv4 value (API)",
  "documentation": {
    "content": "Log-based alerting policy in project ${project} detected an invalid IPv4 value.",
    "mimeType": "text/markdown"
  },

  "conditions": [
    {
      "displayName": "Log match condition: invalid IP addr (API)",
      "conditionMatchedLog": {
        "filter": "log_id(\"syslog\") severity = \"NOTICE\" jsonPayload.result !~ \"^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\\.|$)){4}$\"",
      },
    }
  ],
  "combiner": "OR",

  "alertStrategy": {
    "notificationRateLimit": {
      "period": "300s"
    },
    "autoClose": "604800s",
  },

  "notificationChannels": [
    "projects/PROJECT_ID/notificationChannels/CHANNEL_ID"
  ]
}

Ce code JSON fournit les mêmes informations que celles que vous indiquez. lorsque vous créez une règle d'alerte basée sur les journaux à l'aide de l'explorateur de journaux. Les sections suivantes font le parallèle entre le contenu de cette structure AlertPolicy et les étapes que vous suivez lorsque vous utilisez l'explorateur de journaux pour créer une alerte basée sur les journaux. La valeur du champ conditionMatchedLog est une structure LogMatch.

Saisir un nom et une description

Une règle d'alerte a un nom à afficher et une description associée qui est fournie avec les notifications pour en faciliter la compréhension. Dans l'explorateur de journaux, ces champs sont appelés Alert Name (Nom de l'alerte) et Alert Description (Description de l'alerte). Vous représentez ces valeurs dans une structure AlertPolicy comme suit :

{
  "displayName": "Network address: invalid IPv4 value (API)",
  "documentation": {
    "content": "Log-based alerting policy in project ${project} detected an invalid IPv4 value.",
    "mimeType": "text/markdown"
  },
  ...
}

Dans cet exemple, la valeur de displayName inclut "(API)". ce qui vous permettra de distinguer les deux exemples de stratégies lorsque vous consultez la liste des règles dans la console Google Cloud. La page Règles de Monitoring répertorie les règles avec leur nom à afficher et indique si elles sont basées sur des métriques ou des journaux. Pour plus d'informations, voir Gérez les règles d'alerte basées sur les journaux dans Monitoring.

Le champ documentation inclut, dans le sous-champ content, la description que vous pouvez fournir lorsque vous utilisez l'explorateur de journaux. Le deuxième sous-champ, mimeType est obligatoire lorsque vous spécifiez une valeur pour le champ documentation. La seule valeur valide est "text/markdown".

Choisissez les journaux pour lesquels vous souhaitez recevoir une notification.

Une règle d'alerte basée sur les journaux comporte une seule condition. Dans l'explorateur de journaux, vous spécifiez la condition lorsque vous fournissez une requête dans le champ Définir les entrées de journal pour lesquelles déclencher l'alerte. Vous représentez ces valeurs dans une structure AlertPolicy comme suit :

{ ...
  "conditions": [
    {
      "displayName": "Log match condition: invalid IP addr (API)",
      "conditionMatchedLog": {
        "filter": "log_id(\"syslog\" severity = \"NOTICE\" jsonPayload.result !~ \"^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\\.|$)){4}$\"",
      },
    }
  ],
  "combiner": "OR",
  ...
}

Le champ conditions accepte une liste de structures Condition, même si une règle d'alerte basée sur les journaux ne doit comporter qu'une seule condition. Chaque Condition possède un nom à afficher et une description la condition.

  • La valeur du champ displayName est une brève description de la condition. Lorsque vous utilisez l'explorateur de journaux pour créer des règles d'alerte basées sur les journaux, le nom à afficher est toujours "Log match condition" (Condition de correspondance des journaux). Lorsque vous utilisez l'API Monitoring, vous pouvez fournir un nom à afficher plus précis. Veuillez saisir une valeur.

  • La valeur du champ conditionMatchedLog est une structure LogMatch et la valeur de la filter correspond à la requête que vous spécifiez dans l'explorateur de journaux. Parce que cela est fournie comme valeur d'un champ JSON, la requête entière apparaît entre guillemets. Tous les guillemets de la requête elle-même doivent être échappés avec la méthode \ (barre oblique inverse).

  • La structure LogMatch inclut également une option labelExtractors. Vous pouvez utilisez des extracteurs d'étiquettes pour créer des étiquettes personnalisées à partir de votre les entrées de journal, puis référencer ces étiquettes dans vos notifications.

    Par exemple, pour extraire la valeur de l'étiquette labels."compute.googleapis.com/resource_id" de votre entrée de journal dans une étiquette vm_identifier, la condition précédente peut se présenter comme suit:

    "conditions": [
      {
        "displayName": "Log match condition: invalid IP addr (API)",
        "conditionMatchedLog": {
          "filter": "log_id(\"syslog\" severity = \"NOTICE\" jsonPayload.result !~ \"^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\\.|$)){4}$\"",
          "labelExtractors": {
            "vm_identifier": "EXTRACT(labels.\"compute.googleapis.com/resource_id\")"
          }
        },
      }
    ],
    

    Utilisez la fonction EXTRACT pour correspondre à la valeur entière ou utilisez la REGEXP_EXTRACT pour faire correspondre des sous-chaînes en fonction d'expressions régulières. Il s'agit de la même fonction que celle utilisée pour l'extraction d'étiquettes les métriques ; Pour en savoir plus, consultez la section Créer un libellé.

    Vous pouvez utiliser ces étiquettes extraites dans la documentation d'une règle d'alerte. sont signalées dans les notifications. Dans le champ documentation de votre d'alerte, vous faites référence aux étiquettes extraites à l'aide d'une variable au format ${log.extracted_label.KEY}, où KEY est le nom que vous avez attribué à l'étiquette extraite.

    L'exemple suivant montre comment faire référence à la clé pour le paramètre l'étiquette vm_identifier extraite, de sorte que la valeur du journal le libellé labels."compute.googleapis.com/resource_id" est inclus dans les notifications:

    "documentation": {
      "content": "Log-based alerting policy in project ${project} detected an
       invalid IPv4 value on VM with ID ${log.extracted_label.vm_identifier}.",
      "mimeType": "text/markdown"
    },
    

La valeur du champ combiner indique comment combiner les résultats de plusieurs conditions dans des règles d'alerte basées sur des métriques. Vous ne pouvez en utiliser qu'un seul dans les règles d'alerte basées sur les journaux, Vous devez spécifier le champ combiner avec la valeur "OR". Vous ne pouvez pas créer de règles d'alerte basées sur les journaux avec plusieurs conditions.

Définir les valeurs des paramètres de notification et de fermeture automatique

Une règle d'alerte basée sur les journaux spécifie le délai minimal entre des notifications. Dans l'explorateur de journaux, vous sélectionnez une valeur dans le menu Délai entre les notifications. Vous représentez cette valeur dans une structure AlertPolicy en spécifiant une , en secondes, pour le champ period d'une Structure NotificationRateLimit intégrée AlertStrategy.

De même, la règle d'alerte inclut la période pendant laquelle de bouclage des incidents. La valeur par défaut est de 7 jours. Dans l'explorateur de journaux, vous pouvez sélectionner une autre valeur Menu Durée de la fermeture automatique de l'incident Cette option correspond au Champ autoclose dans la structure de l'API AlertStrategy. Lorsque vous utilisez ce champ, indiquez la valeur en secondes. La valeur minimale est 1 800 secondes ou 30 minutes.

{ ...
  "alertStrategy": {
    "notificationRateLimit": {
      "period": "300s"
    },
    "autoClose": "604800s",
  },
  ...
}

Dans cet exemple, la valeur du champ period (300s) équivaut à 5 minutes La valeur de autoclose, 604800s, équivaut à sept jours.

Indiquer les personnes à avertir

Une règle d'alerte peut inclure une liste de canaux de notification. Dans l'explorateur de journaux, vous sélectionnez des canaux dans un menu. Vous représentez ces valeurs dans une structure AlertPolicy en fournissant une liste d'un ou de plusieurs noms de ressources pour les objets NotificationChannel configurés :

{ ...
  "notificationChannels": [
    "projects/PROJECT_ID/notificationChannels/CHANNEL_ID"
  ]
}

Lorsque vous créez un canal de notification, un nom de ressource lui est attribué. Pour en savoir plus sur la récupération de la liste des canaux de notification disponibles, y compris leurs noms de ressources, consultez la page Récupérer les canaux dans la documentation de Monitoring. Vous ne pouvez pas obtenir les ID des chaînes à l'aide du paramètre console Google Cloud.

Envoyer votre règle d'alerte à l'API Monitoring

Pour créer une règle d'alerte à l'aide de l'API Monitoring, créez un objet AlertPolicy et envoyez-le à la méthode alertPolicies.create. Vous pouvez appeler alertPolicies.create à l'aide de la Google Cloud CLI en appelant directement l'API Monitoring.

Vous pouvez également créer des règles d'alerte basées sur les journaux en utilisant les bibliothèques clientes C#, Go, Java, Python et Ruby. Vous pouvez également utiliser d'autres bibliothèques clientes, mais la bibliothèque pour votre langage doit inclure le type de condition LogMatch.

Pour créer une règle d'alerte à l'aide de gcloud CLI, procédez comme suit : suivantes:

  1. Placez la représentation JSON de votre règle d'alerte dans un fichier texte ; par exemple, dans un fichier appelé alert-invalid-ip.json.

  2. Transmettez ce fichier JSON à la gcloud CLI à l'aide de la commande suivante:

    gcloud alpha monitoring policies create --policy-from-file="alert-invalid-ip.json"
    
  3. Si l'opération réussit, cette commande renvoie le nom de ressource de la nouvelle stratégie, par Exemple:

    Created alerting policy [projects/PROJECT_ID/alertPolicies/POLICY_ID].
    

Pour créer une règle d'alerte en appelant directement alertPolicies.create, vous pouvez utiliser l'outil APIs Explorer comme suit :

  1. Accédez à la page de référence sur alertPolicies.create.

  2. Dans le volet Essayer cette API, procédez comme suit :

    1. Dans le champ name, saisissez la valeur suivante :

      projects/PROJECT_ID
      
    2. Copiez la représentation JSON de votre règle d'alerte et remplacez le contenu du champ Corps de la requête dans l'explorateur d'API par la règle d'alerte copiée.

    3. Cliquez sur Exécuter.

      Si l'appel alertPolicies.create aboutit, vous obtenez un code de réponse HTTP 200 et un corps de réponse vide, {}. Pour en savoir plus sur l'explorateur d'API, consultez la page Utiliser l'explorateur d'API dans la documentation de Monitoring.

Pour en savoir plus sur la création de règles d'alerte à l'aide de l'API Monitoring, consultez la page Créer des règles. Les exemples de ce document utilisent des types de conditions pour les alertes basées sur les métriques. mais les principes sont les mêmes.

Tester la règle d'alerte

Pour tester votre nouvelle règle d'alerte, vous pouvez utiliser la même procédure que celle décrite dans la section Tester l'exemple d'alerte basée sur les journaux.

Exemple: Créer une règle d'alerte lorsqu'une entrée de journal contient une chaîne de texte

Cet exemple utilise la console Google Cloud pour créer une règle d'alerte, à l'aide de l'Explorateur de journaux pour afficher les entrées de journal, et de la Google Cloud CLI pour écrire une entrée de journal:

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

    Accéder à l'explorateur 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. Dans le volet Requête, saisissez la requête suivante après avoir mis à jour le la valeur de PROJECT_ID:

    logName="projects/PROJECT_ID/logs/test-log"
    textPayload:"Oops"
    

    La requête recherche dans le journal nommé test-log les entrées de journal qui comporte un champ textPayload contenant la chaîne "Petit problème".

  3. Cliquez sur Créer une alerte et renseignez les champs de la boîte de dialogue. Vous devez saisir un nom pour la règle, par exemple Alert on Oops. La requête que vous avez saisie dans à l'étape précédente est automatiquement incluse dans la règle d'alerte.

  4. Pour tester la règle d'alerte, ouvrez Cloud Shell, puis exécutez la commande suivante:

    gcloud logging write test-log --severity=ERROR --payload-type=text 'This log entry contains Oops'
    

    La commande précédente écrit une entrée dans le journal nommée test-log. La l'entrée présente un niveau de gravité de ERROR et inclut un champ textPayload.

  5. Dans l'explorateur de journaux, cliquez sur Exécuter la requête.

    Une fois l'écran actualisé, vous pouvez consulter les détails de l'entrée de journal. que vous avez écrit à l'étape précédente.

  6. Dans la console Google Cloud, accédez à la page Alertes :

    Accéder à l'interface des alertes

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

    Le volet Incidents affiche l'incident et ses détails. sur la règle d'alerte.

    Si vous ne voyez pas d'incident lorsque vous ouvrez la page Alertes, patientez quelques minutes, puis actualisez la page.

Vous ne verrez plus d'incident ni ne recevrez de notification répéter immédiatement la commande Google Cloud CLI. Paramètres de la règle d'alerte spécifier la période minimale entre les incidents. Vous pouvez les consulter et les modifier en modifiant la règle.