Como criar uma política de alertas

As políticas de alertas para a taxa de gravação do seu erro de orçamento são baseadas no seletor de séries temporais select_slo_burn_rate, descrito em Como recuperar dados do SLO. Existem outros seletores de séries temporais que podem ser usados como base para políticas de alertas. Para ver uma discussão sobre políticas de alertas baseadas em SLO, consulte Como receber alertas sobre a taxa de gravação.

As políticas de alertas são criadas com o método alertPolicies.create. O uso geral desse método está documentado em Como gerenciar políticas de alertas.

As políticas de alertas para SLOs são parecidas com outras políticas de alertas de limite de métricas, mas diferem de uma maneira específica: o filter na especificação MetricThreshold da condição usa um seletor de série temporal em vez de um par dos tipos de recurso métrico e monitorado.

Condições para políticas de alertas baseadas em SLO

As políticas de alertas precisam ter pelo menos uma condição. Para uma condição baseada em SLO, use uma condição de tipo MetricThreshold.

Uma condição do limite métrico pode conter dois pares de configurações de séries temporais: filter e aggregations. Como os dados do SLO são recuperados de maneira diferente dos outros dados de séries temporais, o único campo usado em uma condição para um SLO é o campo filter.

Uma condição para um SLO define os campos comparison, thresholdValue, duration e trigger.

Este exemplo cria uma condição que é violada quando a taxa de gravação excede 2 vezes a taxa normal. A estrutura terá esta aparência:

  "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",
        },
      },
    }
  ],

Para definir o campo filter, é necessário o nome do recurso de um SLO específico. Este valor é da forma projects/${PROJECT}/services/${SERVICE_ID}/serviceLevelObjectives/${SLO_ID}. Para ver informações sobre como encontrar o ID do SLO, leia Listagem de SLOs.

Para criar um alerta sobre a taxa de gravação, use o seletor de séries temporais select_slo_burn_rate. Esse seletor aceita dois valores, o SLO de destino e o período de lookback. Para ver mais informações, leia select_slo_burn_rate.

Por exemplo, o filtro a seguir obtém a taxa de gravação do SLO de destino com um período de lookback de 1 hora:

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

O restante da política de alerta

Para concluir a política de alertas, especifique valores para os campos restantes:

  • displayName: uma descrição da política de alertas.
  • combiner: descreve a lógica para combinar condições. Esta política tem apenas uma condição, portanto ou AND ou OR funciona.
  • notificationChannels: uma matriz de canais de notificação atuais a serem usados quando a política de alertas for acionada. Para ver informações sobre como encontrar e criar canais de notificação, leia Canais de notificação.
  • documentation: informações enviadas quando a condição é violada para ajudar os destinatários a diagnosticar o problema. Para ver detalhes, consulte:Documentation.

Como criar a política de alertas

O exemplo a seguir usa a API para criar uma política de alertas de taxas de gravação. Para ver informações sobre como listar, modificar e excluir políticas de alertas, consulte Como gerenciar políticas de alertas por API.

Protocolo

Para criar a política de alertas usando curl, envie uma mensagem POST para o endpoint https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/alertPolicies e digite a política de alertas no corpo da solicitação. O JSON no corpo da solicitação contém uma política de alertas que usa uma condição de limite com base no seletor de série temporal select_slo_burn_rate com um período de lookback de uma hora.

  1. Crie uma variável para armazenar o corpo da solicitação:

    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. Publique a solicitação no endpoint:

    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