Crear una política de alertas

Las políticas de alerta para la tasa de consumo de su presupuesto de errores se basan en el selector de series temporales select_slo_burn_rate , descrito en Recuperación de datos de SLO . Existen otros selectores de series temporales y puede utilizar algunos de ellos como base para las políticas de alerta. Para obtener información sobre las políticas de alertas basadas en SLO, consulte Alertas sobre su tasa de grabación .

Las políticas de alerta se crean mediante el método alertPolicies.create . El uso general de este método está documentado en Gestión de políticas de alertas .

Las políticas de alerta para SLO son similares a otras políticas de alerta de umbral de métrica, pero difieren en una manera específica: el filter en la especificación MetricThreshold de la condición utiliza un selector de series de tiempo en lugar de un par de tipos de métricas y recursos monitoreados.

Condiciones para políticas de alerta basadas en SLO

Una política de alertas debe tener al menos una condición. Para una condición basada en SLO, utilice una condición de tipo MetricThreshold .

Una condición de umbral de métrica puede contener dos pares de configuraciones de series temporales: filter y aggregations . Debido a que los datos de SLO se recuperan de manera diferente a otros datos de series temporales, el único campo utilizado en una condición para un SLO es el campo filter .

Una condición para un SLO establece los campos de comparison , thresholdValue , duration y trigger .

Este ejemplo crea una condición que se viola cuando la tasa de grabación excede 2 veces la tasa normal. La estructura se ve así:

  "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 configurar el campo filter , necesita el nombre del recurso de un SLO específico. Este valor tiene el formato projects/${PROJECT}/services/${SERVICE_ID}/serviceLevelObjectives/${SLO_ID} . Para obtener información sobre cómo encontrar el ID de SLO, consulte Listado de SLO .

Para crear una alerta sobre la tasa de grabación, utilice el selector de series temporales select_slo_burn_rate . Este selector toma dos valores, el SLO objetivo y el período retrospectivo. Para obtener más información, consulte select_slo_burn_rate .

Por ejemplo, el siguiente filtro obtiene la tasa de grabación del SLO objetivo con un período retrospectivo de 1 hora:

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

El resto de la política de alertas

Para completar la política de alertas, especifique valores para los campos restantes:

  • displayName : una descripción de la política de alertas.
  • combiner : describe la lógica para combinar condiciones. Esta política tiene solo una condición, por lo que funciona AND u OR .
  • notificationChannels : una serie de canales de notificación existentes que se utilizarán cuando se active la política de alertas. Para obtener información sobre cómo buscar y crear canales de notificación, consulte Canales de notificación .
  • documentation : información que se envía cuando se viola la condición para ayudar a los destinatarios a diagnosticar el problema. Para obtener más información, consulte Documentation .

Creando la política de alertas

El siguiente ejemplo utiliza la API para crear una política de alertas de tasa de grabación. Para obtener información sobre cómo enumerar, modificar y eliminar políticas de alerta, consulte Administrar políticas de alerta por API .

Protocolo

Para crear la política de alertas mediante curl , envíe un mensaje POST al punto final https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/alertPolicies y proporcione la política de alertas en el cuerpo de la solicitud. El JSON en el cuerpo de la solicitud describe una política de alerta que utiliza una condición de umbral basada en el selector de series temporales select_slo_burn_rate con un período retrospectivo de una hora.

  1. Cree una variable para contener el cuerpo de la solicitud:

    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 la solicitud en el punto 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