Alertas sobre el ritmo de consumo

Puedes crear políticas de alertas sobre tus objetivos de nivel de servicio (SLO) para informarte si corres el riesgo de infringir un SLO. Selecciona el SLO que deseas supervisar y, luego, configura una condición que activa una alerta cuando se infringe la condición. La condición por lo general se expresa cuando seleccionas un valor límite que constituye una infracción y un período durante el cual se permite la infracción. Si se excede el umbral por más tiempo que el permitido, se activa la política de alertas.

En esta página, se describe cómo configurar una política de alertas del ritmo de consumo de tu porcentaje de error aceptable. No abarca las políticas de alertas en detalle; se da por sentado que ya conoces los conceptos básicos de las condiciones y los canales de notificación. Para obtener información general sobre las políticas de alertas y cómo crearlas, consulta Usa políticas de alertas.

Ritmo de consumo del porcentaje de error aceptable

Su presupuesto de error para un período de cumplimiento es (1 - objetivo de SLO) × (eventos aptos en el período de cumplimiento). Si su objetivo de SLO es del 95%, es aceptable que el 5% de los eventos medidos por su SLO falle antes de que se pierda su objetivo de SLO. La tasa de grabación te indica qué tan rápido estás consumiendo tu presupuesto de errores. Un ritmo de consumo de >1 indica que, si la tasa de error medida actualmente se conserva en cualquier período de cumplimiento futuro, el servicio estará fuera del SLO para ese período. Para obtener más información, consulta Porcentajes de errores aceptables.

El selector de series temporales select_slo_burn_rate recupera la métrica de ritmo de consumo. Una política de alertas de ritmo de consumo te notifica cuando tu porcentaje de error aceptable se consume más rápido que un umbral que defines, medido durante el período de cumplimiento de la alerta. Hay otros selectores de series temporales; consulta Recupera datos de SLO para obtener más información. Puedes crear políticas de alertas que utilicen algunos de estos otros selectores de series temporales, pero debes crearlas con la API de Cloud Monitoring.

Descripción general: crea una política de alertas en un SLO

Crear una política de alertas para un SLO es muy similar a crear una política de alertas para cualquier otra métrica.

En esta sección, se revisan los pasos generales y en las siguientes secciones se los describe con más detalle.

Si quieres crear una política de alertas para un SLO, debes seguir estos pasos:

  1. Identifica el SLO en el que deseas basar la política de alertas.

  2. Crea una condición para tu política de alertas que use el SLO elegido. La condición es dónde se usa el selector de series temporales para recuperar los datos del SLO. Por ejemplo, si usas el selector de series temporales para el ritmo de consumo, los datos recuperados reflejarán el ritmo de consumo del porcentaje de error aceptable para el SLO elegido.

    Mediante esta condición, también se especifica el límite y la duración de las infracciones del SLO antes de activar una alerta. Por ejemplo, si quieres que el ritmo de consumo sea superior al ritmo deseado durante un período determinado antes de activar una alerta. El valor “superior” es el límite de la condición, y el valor del “período” determinado es la duración de la condición.

  3. Identifica o crea un canal de notificaciones para usar en tu política de alertas.

  4. Proporciona documentación que explique a los usuarios qué activó la política de alertas.

  5. Recopila estas piezas en una invocación para crear una política de alertas.

Para obtener información general sobre las políticas de alertas y cómo crearlas, consulta Usa políticas de alertas.

Políticas de alertas y períodos de retrospectiva

Cuando recuperas los datos del SLO con un selector de series temporales, especifica un identificador para el SLO y un período de retrospectiva. El período de retrospectiva determina la distancia en el tiempo que quieres retroceder para recuperar los datos. También se usa como período de cumplimiento para calcular el rendimiento del SLO y el porcentaje de error aceptable.

Por motivos técnicos, actualmente no es posible basar las alertas en el porcentaje de consumo del presupuesto de error de un SLO con un período de cumplimiento de más de 24 horas. En muchos casos, calcular su período de cumplimiento a largo plazo (por ejemplo, 28 o 30 días) con una hora o más es suficiente para detectar interrupciones y generar una respuesta operativa a corto plazo.

Los períodos de cumplimiento más cortos brindan una detección más rápida de los problemas, pero con la causa de que los grandes cambios en el tráfico y las tasas de errores en un día pueden generar alertas muy sensibles durante los períodos de poco tráfico. Considera usar un umbral de tasa de quemas significativamente mayor que 1 para reducir la sensibilidad de las alertas durante estos momentos.

Tipos de alertas de porcentaje de error aceptable

Si configuras políticas de alertas para supervisar tu porcentaje de error aceptable, es una buena idea configurar dos políticas de alertas relacionadas:

  • Alerta de consumo rápido, que te advierte de un gran cambio repentino en el consumo que, si no se corrige, agotará tu porcentaje de error aceptable en muy poco tiempo. “A este ritmo, consumiremos el porcentaje de error aceptable de todo el mes en dos días”.

    Para una condición como esta, usar una duración de una retrospectiva más corta tiene sentido. Es deseable saber si surgió y persistió una condición que pueda ser catastrófica, aunque sea por poco tiempo. Si es en verdad catastrófica, no te conviene esperar demasiado para enterarte.

    El límite del ritmo de consumo del que se alerta aquí es mucho más alto que el modelo de referencia ideal para el período de retrospectiva.

  • Alerta de consumo lento, que te advierte sobre un ritmo de consumo que, si no se altera, agotará el porcentaje de error aceptable antes de que finalice el período de cumplimiento. Este tipo de condición es menos urgente que una condición de consumo rápido. “Estamos un poco por encima de lo que nos gustaría estar en este momento del mes, pero aún no tenemos grandes problemas”.

    Para una condición de consumo lento, tiene sentido usar una duración de retrospectiva más larga, con el fin de reducir las variaciones en el consumo a más corto plazo.

    El límite del ritmo de consumo que se alerta aquí es más alto que el modelo de referencia ideal para el período de retrospectiva, pero no lo es en gran medida. Una política basada en un período de retrospectiva más corto con un límite alto podría generar demasiadas alertas si el consumo a largo plazo se iguala. Pero si el consumo se mantiene demasiado alto durante un período más largo, con el tiempo consumirá todo tu porcentaje de error aceptable.

Crea una alerta de SLO: API

Las políticas de alertas para el ritmo de consumo del porcentaje de error aceptable se basan en el selector de series temporales select_slo_burn_rate, que se describe en Recupera datos de SLO. Hay otros selectores de series temporales, y puedes usar algunos de ellos como base para las políticas de alertas.

Las políticas de alertas se crean con el método alertPolicies.create. El uso general de este método está documentado en Administra las políticas de alertas.

Las políticas de alertas para los SLO son similares a otras políticas de alerta en muchos sentidos: son políticas de alerta con una condición de límite de métrica. Se diferencian de otras políticas de alertas de una manera muy específica: el filter en la especificación MetricThreshold de la condición usa un selector de series temporales en lugar de un par de métricas y tipos de recursos supervisados.

Condiciones para las políticas de alertas basadas en SLO

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

Una condición de límite de métrica puede contener dos pares de configuraciones de series temporales: filter y aggregations, además de denominatorFilter y denominatorAggregations para las proporciones de compilación. Como los datos de SLO no se recuperan con los filtros de supervisión estándar, el único campo que se usa en una condición para un SLO es el campo filter.

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

En este ejemplo, se crea una condición que se infringe cuando la velocidad de consumo supera el doble de la velocidad normal. La estructura se ve así:

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

Para establecer el campo filter, necesitas 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 del SLO, consulta Genera una lista de SLO.

Para crear una alerta sobre el ritmo de consumo, usa el selector de series temporales select_slo_burn_rate. Este selector toma dos valores: el SLO objetivo y el período de retrospectiva. Para obtener más información, consulta select_slo_burn_rate.

Por ejemplo, el siguiente filtro obtiene el ritmo de consumo del SLO objetivo con un período de retrospectiva 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, especifica los valores de los campos restantes:

  • displayName: Es una descripción de la política de alertas.
  • combiner: Describe la lógica para combinar condiciones. Esta política solo tiene una condición, así que AND o OR funcionan.
  • notificationChannels: Es un arreglo de canales de notificación existentes que se pueden usar cuando se activa la política de alertas. Para obtener información sobre cómo buscar y crear canales de notificación, consulta Canales de notificación.
  • documentation: Es información que se envía cuando se infringe la condición para ayudar a los destinatarios a diagnosticar el problema. Para obtener detalles, consulta Documentation.

Crea la política de alertas

En el siguiente ejemplo, se usa la API para crear una política de alertas de ritmo de consumo. Para obtener información acerca de cómo enumerar, modificar y borrar las políticas de alertas, consulta Administra las políticas de alertas según la API.

Protocolo

Para crear la política de alertas con curl, envía un mensaje de POST al extremo https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/alertPolicies y proporciona la política de alertas en el cuerpo de la solicitud. Con el JSON del cuerpo de la solicitud se describe una política de alertas que usa una condición de límite basada en el selector de series temporales select_slo_burn_rate con un período de retrospectiva de una hora.

  1. Crea una variable para conservar 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. Publica la solicitud en el extremo:

    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
    

Crea políticas de alertas basadas en SLO con la consola

Para obtener información sobre las políticas de alertas basadas en SLO en la malla de servicios de Anthos, consulta la documentación de la malla de servicios de Anthos: crea una política de alertas para un SLO.