Configurer des alertes via Cloud Logging

Ce document explique comment configurer, personnaliser et tester les alertes pour les événements liés à l'état des services.

Personalized Service Health s'intègre aux alertes de journaux Cloud Monitoring pour vous permettre de configurer et de recevoir des alertes. Vous pouvez créer des notifications pour les conditions suivantes :

  • Lorsque de nouveaux incidents sont signalés.
  • Lorsqu'un incident existant est mis à jour, par exemple lorsque l'assistance Google Cloud envoie un nouveau message.
  • Lorsque des incidents sont créés ou mis à jour pour des produits ou des lieux spécifiques, tels que des régions. Google Cloud
  • Lorsque des détails spécifiques d'incidents existants sont modifiés, comme l'état et la pertinence.

Étant donné que ces notifications utilisent des alertes de journaux, chacune d'elles est associée à un incident Monitoring. Chaque notification inclut des liens vers la page de l'incident et un lien direct vers le tableau de bord sur l'Service Health. En savoir plus sur l'investigation des incidents

Une fois que vous avez configuré une alerte, vous recevez une notification chaque fois que les conditions de votre règle d'alerte sont remplies. Ces notifications sont soumises aux limites de surveillance. Par exemple, vous ne pouvez pas recevoir plus de 20 alertes par règle, par jour et par projet.

Les sections suivantes expliquent comment configurer une règle d'alerte basée sur les journaux et fournissent des exemples de scénarios d'alerte courants. Les alertes de journaux s'appuient sur des canaux de notification, qui sont compatibles avec diverses intégrations, y compris les e-mails, les SMS, Pub/Sub, les webhooks, Slack et PagerDuty.

Pour acheminer une alerte vers une destination autre que celles listées précédemment, envisagez d'utiliser un webhook. Par exemple, vous pouvez configurer un webhook pour ServiceNow. Pour en savoir plus, consultez Configurer un webhook dans Google Cloud dans la documentation ServiceNow.

Formats des notifications d'alerte

Les formats des notifications d'alerte varient selon le canal de notification.

E-mail

Si vous configurez l'alerte pour qu'elle envoie un e-mail, un message utilisant l'adresse alerting-noreply@google.com sera envoyé à l'adresse e-mail de votre choix lorsque la condition d'alerte sera remplie.

Slack

Si vous configurez votre notification personnalisée pour qu'elle soit publiée sur Slack, un message de l'application Cloud Monitoring s'affichera dans le canal que vous avez sélectionné lorsque l'événement se produira.

Configurer une règle d'alerte

Une alerte utilise une règle d'alerte, qui décrit les circonstances dans lesquelles vous souhaitez être averti et comment vous souhaitez l'être.

Vous pouvez configurer des règles d'alerte dans le tableau de bord Service Health ou à l'aide de Google Cloud CLI.

Les règles d'alerte nécessitent un canal de notification Cloud Monitoring, qui définit l'endroit où une alerte est envoyée. Si vous n'avez pas de canal de notification, vous pouvez en créer un dans la consoleGoogle Cloud ou à l'aide de l'API Monitoring.

Dans le tableau de bord "État du Service Health"

Consultez le guide de démarrage rapide.

Utiliser la CLI gcloud

Pour configurer une règle d'alerte à l'aide de la gcloud CLI :

  1. Obtenez l'ID de votre canal de notification.

    a. Lister les ID des canaux de notification

    gcloud config set project PROJECT_ID
    gcloud beta monitoring channels list
    

    b. Recherchez les entrées avec projects/PROJECT_ID/notificationChannels/. Ces entrées correspondent aux ID des canaux de notification.

  2. Créez un fichier policy.json avec le contenu suivant :

    • ALERT_NAME s'affiche dans la notification. Exemple : "Incident Google Cloud SQL"

    • ALERT_CONDITION définit le moment où une alerte doit être envoyée.

      • Lorsque vous définissez des conditions, utilisez les valeurs trouvées dans Google Cloud products et locations.
      • Exemples de conditions d'alerte :

        Condition d'alerte Valeur ALERT_CONDITION
        Recevoir des alertes pour tout événement Cloud SQL jsonPayload.impactedProductIds =~ \"hV87iK5DcEXKgWU2kDri\"
        Recevoir des alertes pour tout événement se produisant dans la zone us-central1-a jsonPayload.impactedLocations =~ \"us-central1-a\"

      Consultez d'autres exemples de conditions d'alerte.

    • NOTIFICATION_CHANNEL correspond à l'ID du canal de notification que vous avez récupéré à l'aide de la commande list à l'étape précédente. Exemple : projects/PROJECT_ID/notificationChannels/885798905074

    L'extrait de code suivant montre un exemple de fichier policy.json.

    {
      "displayName": "ALERT_NAME",
      "combiner": "OR",
      "conditions": [ {
        "displayName": "Log match condition",
        "conditionMatchedLog": {
          "filter": "ALERT_CONDITION",
         } } ],
      "notificationChannels": [ "NOTIFICATION_CHANNEL" ],
    }
    
  3. Créez la règle Cloud Monitoring.

    gcloud config set project PROJECT_ID
    gcloud alpha monitoring policies create --policy-from-file="policy.json"
    

Personnaliser le contenu de l'alerte

Vous pouvez définir les champs à l'intérieur de la notification à l'aide des champs suivants dans le fichier JSON :

  • labelExtractors : propriétés à inclure dans l'en-tête de la notification. Pour personnaliser ces propriétés, consultez le guide LabelExtractors.
  • content : mise en forme de la notification par e-mail. Vous pouvez utiliser la substitution de variables Markdown, qui vous permet d'utiliser labelExtractors comme variables. Pour personnaliser ces variables, consultez ce guide.

Pour savoir comment personnaliser vos alertes, consultez les exemples de règles et de conditions d'alerte.

Tester votre alerte

Pour tester l'alerte, vous allez utiliser un exemple de journal de test avec Cloud Logging. Le journal de test affiche la logique d'alerte que vous avez configurée précédemment.

Utiliser la console Google Cloud

Procédez comme suit :

  1. Accédez à la page de référence de la méthode entries:write, qui vous permet d'écrire des entrées de journal dans Cloud Logging. Une fenêtre vous permettant d'essayer la méthode s'affiche.
  2. Dans le corps de la requête, remplacez PROJECT_ID par votre propre projet.
  3. Modifiez les champs jsonPayload dans le corps de la requête, en fonction de la condition d'alerte que vous testez. Vous pouvez également consulter le schéma event_log.proto et ajuster les valeurs du journal pour tester des scénarios spécifiques qui vous intéressent.

    {
      "entries": [
        {
          "logName": "projects/PROJECT_ID/logs/servicehealth.googleapis.com%2Factivity",
          "resource": {
            "type": "servicehealth.googleapis.com/Event",
            "labels": {
              "resource_container": "PROJECT_ID",
              "location": "global",
              "event_id": "U4AqrjwFQYi5fFBmyAX-Gg"
            }
          },
          "labels": {
            "servicehealth.googleapis.com/new_event": "true",
            "servicehealth.googleapis.com/updated_fields": "[]"
          },
          "jsonPayload": {
            "@type": "type.googleapis.com/google.cloud.servicehealth.logging.v1.EventLog",
            "category": "INCIDENT",
            "title": "EXAMPLE... NOT REAL INCIDENT",
            "description": "EXAMPLE FOR TESTING, NOT REAL INCIDENT. We are experiencing an issue with Google Cloud infrastructure components at us-east1, australia-southeast2. Our engineering team continues to investigate the issue. We apologize to all who are affected by the disruption.",
            "updateTime": "2022-07-15T22:26:40Z",
            "endTime": "2022-07-16T22:13:20Z",
            "impactedLocations": "['us-east1', 'australia-southeast2']",
            "impactedProducts": "['CloudSQL']",
            "impactedProductIds": "['hV87iK5DcEXKgWU2kDri']",
            "startTime": "2022-07-13T12:26:40Z",
            "nextUpdateTime": "2022-07-13T16:26:40Z",
            "state": "ACTIVE",
            "detailedState": "CONFIRMED",
            "relevance": "RELATED"
          }
        }
      ]
    }
    
  4. Cliquez sur Exécuter. Une fenêtre s'affiche, dans laquelle Google APIs Explorer demande l'accès à votre compte.

  5. Autorisez l'accès à Google APIs Explorer. La fenêtre contenant le corps de la requête affiche la capture d'écran suivante, qui indique que l'opération a réussi.

    200 messages

  6. Patientez quelques minutes, puis vérifiez que l'alerte a été déclenchée.

    1. Dans la console Google Cloud , accédez à la page Cloud Monitoring > Incidents.

      Accéder à "Incidents"

    2. Vérifiez si vous avez reçu une alerte sur le canal de notification utilisé par la règle d'alerte.

Si vous devez tester à nouveau l'alerte, attendez au moins cinq minutes avant de le faire.

Utiliser gcloud

Vous pouvez également créer une entrée de journal de test en appelant l'API Cloud Logging à l'aide de la commande gcloud.

  1. (Facultatif) Vérifiez votre projet actuel.

    gcloud config list
    
  2. Définissez votre projet actuel.

    gcloud_name config set project PROJECT_ID
    
  3. Écrivez l'entrée du journal de test.

    gcloud logging write --payload-type=json
    LOG_NAME
    '{ "category": "INCIDENT", "relevance": "IMPACTED", "@type": "type.googleapis.com/google.cloud.servicehealth.logging.v1.EventLog", "description": "This is a test log entry"}'
    
  4. Patientez quelques minutes, puis vérifiez que l'alerte a été déclenchée.