Criar uma política de alerta

As políticas de alerta para a velocidade de consumo da sua margem de erro baseiam-se no seletor de séries cronológicas select_slo_burn_rate, descrito no artigo Obter dados de SLO. Existem outros seletores de séries cronológicas e pode usar alguns deles como base para políticas de alerta. Para uma discussão sobre políticas de alerta baseadas em SLOs, consulte o artigo Alertas sobre a taxa de consumo.

Crie políticas de alerta através do método alertPolicies.create. A utilização geral deste método está documentada no artigo Gerir políticas de alerta.

As políticas de alerta para SLOs são semelhantes a outras políticas de alerta de limite de métricas, mas diferem de uma forma específica: a filterna especificação MetricThreshold da condição usa um seletor de séries cronológicas em vez de um par de tipos de métricas e recursos monitorizados.

Condições para políticas de alerta baseadas em SLOs

Uma política de alerta tem de ter, pelo menos, uma condição. Para uma condição baseada em SLO, use uma condição do tipo MetricThreshold.

Uma condição de limite de métricas pode conter dois pares de configurações de séries cronológicas: filter e aggregations. Uma vez que os dados de SLO são obtidos de forma diferente dos outros dados de séries cronológicas, o único campo usado numa 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 consumo excede 2 vezes a taxa normal. A estrutura tem o seguinte aspeto:

  "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, precisa do nome do recurso de um SLO específico. Este valor tem o formato projects/${PROJECT}/services/${SERVICE_ID}/serviceLevelObjectives/${SLO_ID}. Para obter informações sobre como encontrar o ID do SLO, consulte o artigo Liste SLOs.

Para criar um alerta sobre a taxa de consumo, use o seletor de séries cronológicas select_slo_burn_rate. Este seletor usa dois valores: o SLO alvo e o período de análise retrospetiva. Para mais informações, consulte select_slo_burn_rate.

Por exemplo, o filtro seguinte obtém a taxa de consumo do SLO alvo com um período de análise retrospetiva de 1 hora:

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

O resto da política de alerta

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

  • displayName: uma descrição da política de alerta.
  • combiner: descreve a lógica para combinar condições. Esta política tem apenas uma condição, pelo que AND ou OR funciona.
  • notificationChannels: uma matriz de canais de notificação existentes a usar quando a política de alerta é acionada. Para mais informações sobre como encontrar e criar canais de notificação, consulte o artigo Canais de notificação.
  • documentation: Informações enviadas quando a condição é violada para ajudar os destinatários a diagnosticar o problema. Para obter mais detalhes, consulte Documentation.

Criar a política de alerta

O exemplo seguinte usa a API para criar uma política de alertas de taxa de consumo. Para informações sobre como listar, modificar e eliminar políticas de alerta, consulte o artigo Gerir políticas de alerta por API.

Protocolo

Para criar a política de alerta através da API curl, envie uma mensagem POST para o ponto final https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/alertPolicies e forneça a política de alerta no corpo do pedido. O JSON no corpo do pedido descreve uma política de alerta que usa uma condição de limite com base no select_slo_burn_rate seletor de séries cronológicas com um período de análise retrospetiva de uma hora.

  1. Crie uma variável para conter o corpo do pedido:

    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 o pedido no ponto final:

    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