Créer une règle d'alerte

Les règles d'alerte pour le taux d'utilisation de votre marge d'erreur reposent sur le sélecteur de séries temporelles select_slo_burn_rate, qui est décrit sur la page Obtenir les données de SLO. Il existe d'autres sélecteurs de séries temporelles. Vous pouvez en utiliser certains comme base pour les règles d'alerte. Pour en savoir plus sur les règles d'alerte basées sur un SLO, consultez la page Créer des alertes sur votre taux d'utilisation.

Vous pouvez créer des règles d'alerte à l'aide de la méthode alertPolicies.create. L'utilisation générale de cette méthode est décrite sur la page Gérer les règles d'alerte.

Les règles d'alerte pour les SLO sont semblables aux autres règles d'alerte basées sur un seuil de métrique, mais elles diffèrent d'une manière spécifique : filter dans la spécification MetricThreshold de la condition utilise un sélecteur de séries temporelles au lieu d'une paire de types de métriques et de ressources surveillées.

Conditions applicables aux règles d'alerte basées sur le SLO

Une règle d'alerte doit comporter au moins une condition. Pour une condition basée sur le SLO, utilisez une condition de type MetricThreshold.

Une condition de seuil de métrique peut contenir deux paires de configurations de séries temporelles : filter et aggregations. Étant donné que les données du SLO sont récupérées différemment des autres données de séries temporelles, le seul champ utilisé dans une condition pour un SLO est le champ filter.

Une condition pour un SLO définit les champs comparison, thresholdValue, duration et trigger.

Cet exemple crée une condition qui n'est pas respectée lorsque le taux d'utilisation est supérieur à deux fois le taux normal. La structure se présente comme suit :

  "conditions": [
    {
      "displayName":"SLO burn rate alert for ${SLO_ID} exceeds 2",
      "conditionThreshold": {
        "filter": DATA_RETRIEVAL_FILTER_FOR_SLO,
        "comparison":"COMPARISON_GT",
        "thresholdValue": 2,
        "duration": {
          "seconds":"0",
        },
      },
    }
  ],

Pour définir le champ filter, vous avez besoin du nom de ressource d'un SLO spécifique. Cette valeur possède le format projects/${PROJECT}/services/${SERVICE_ID}/serviceLevelObjectives/${SLO_ID}. Pour savoir comment trouver l'ID du SLO, consultez la section Répertorier les SLO.

Pour créer une alerte sur le taux d'utilisation, utilisez le sélecteur de séries temporelles select_slo_burn_rate. Ce sélecteur prend deux valeurs, le SLO cible et la période d'analyse. Pour en savoir plus, consultez la page sur la méthode select_slo_burn_rate.

Par exemple, le filtre suivant obtient le taux d'utilisation du SLO cible avec une période d'analyse d'une heure :

"filter":"select_slo_burn_rate(\"projects/${PROJECT}/services/${SERVICE_ID}/serviceLevelObjectives/${SLO_ID}\", \"60m\")"

Champs restants de la règle d'alerte

Pour terminer la règle d'alerte, spécifiez les valeurs des champs restants :

  • displayName : description de la règle d'alerte.
  • combiner : décrit la logique de combinaison des conditions. Cette règle ne comporte qu'une seule condition. Ainsi, soit AND, soit OR fonctionne.
  • notificationChannels : tableau des canaux de notification existants à utiliser lorsque la règle d'alerte est déclenchée. Pour plus d'informations sur la recherche et la création des canaux de notification, consultez la section Canaux de notification.
  • documentation : informations envoyées lorsque la condition n'est pas respectée pour aider les destinataires à diagnostiquer le problème. Pour plus d'informations, consultez la section Documentation.

Créer la règle d'alerte

L'exemple suivant utilise l'API pour créer une règle d'alerte sur le taux d'utilisation. Pour savoir comment répertorier, modifier et supprimer des règles d'alerte, consultez la page Gérer des règles d'alerte à l'aide de l'API.

Protocole

Pour créer la règle d'alerte à l'aide de curl, envoyez un message POST au point de terminaison https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/alertPolicies, puis indiquez la règle d'alerte dans le corps de la requête. Le code JSON du corps de la requête décrit une règle d'alerte qui utilise une condition de seuil basée sur le sélecteur de séries temporelles select_slo_burn_rate avec une période d'analyse d'une heure.

  1. Créez une variable destinée à contenir le corps de la requête :

    CREATE_ALERT_POST_BODY=$(cat <<EOF
    {
      "displayName":"SLO burn-rate alert for ${SLO_ID} with a threshold of 2",
      "combiner":"AND",
      "conditions": [
        {
          "displayName":"SLO burn rate alert for ${SLO_ID} exceeds 2",
          "conditionThreshold": {
            "filter":"select_slo_burn_rate(\"projects/${PROJECT}/services/${SERVICE_ID}/serviceLevelObjectives/${SLO_ID}\", \"60m\")",
            "comparison":"COMPARISON_GT",
            "thresholdValue": 2,
            "duration": {
              "seconds":"0",
            },
          },
        }
      ],
      "notificationChannels": ["${NOTIFICATION_CHANNEL}", ],
      "documentation": {
         "content": "SLO burn for the past 60m exceeded twice the acceptable budget burn rate.",
         "mime_type": "text/markdown",
      },
    }
    EOF
    )
    
  2. Envoyez la requête au point de terminaison :

    curl  --http1.1 --header "Authorization: Bearer ${ACCESS_TOKEN}" --header "Content-Type: application/json" -X POST -d "${CREATE_ALERT_POST_BODY}" https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/alertPolicies