Las políticas de alertas de la velocidad de gasto de tu presupuesto de errores se basan en el selector de serie temporal select_slo_burn_rate
, que se describe en Recuperar datos de SLO. Hay otros selectores de series temporales, y puedes usar algunos de ellos como base para las políticas de alertas. Para consultar un debate sobre las políticas de alertas basadas en SLOs, consulta Alertas sobre tu ritmo de consumo.
Para crear políticas de alertas, se usa el método alertPolicies.create
. El uso general de este método se describe en el artículo Gestionar políticas de alertas.
Las políticas de alertas de SLOs son similares a otras políticas de alertas de umbral de métricas, pero se diferencian en un aspecto concreto: el filter
de la especificación MetricThreshold
de la condición usa un selector de serie temporal en lugar de un par de tipos de métrica y de recurso monitorizado.
Condiciones de las políticas de alertas basadas en objetivos de nivel de servicio
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 umbral de métrica puede contener dos pares de configuraciones de serie temporal: filter
y aggregations
. Como los datos de SLO se obtienen de forma diferente a otros datos de serie temporal, el único campo que se utiliza en una condición de SLO es el campo filter
.
Una condición de un objetivo de nivel de servicio define los campos comparison
, thresholdValue
, duration
y trigger
.
En este ejemplo se crea una condición que se incumple cuando la tasa de quema supera el doble de la tasa normal. La estructura es la siguiente:
"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 el campo filter
, necesitas el nombre de 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, consulta Listar SLOs.
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 periodo retrospectivo. Para obtener más información, consulta select_slo_burn_rate
.
Por ejemplo, el siguiente filtro obtiene la tasa de consumo del objetivo de nivel de servicio con un periodo 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, especifica los valores de los campos restantes:
displayName
: descripción de la política de alertas.combiner
: describe la lógica para combinar condiciones. Esta política solo tiene una condición, por lo que funciona tantoAND
comoOR
.notificationChannels
: una matriz de canales de notificaciones que se usarán cuando se active la política de alertas. Para obtener información sobre cómo encontrar y crear canales de notificación, consulta Canales de notificación.documentation
: información que se envía cuando se incumple la condición para ayudar a los destinatarios a diagnosticar el problema. Para obtener más información, consultaDocumentation
.
Crear la política de alertas
En el siguiente ejemplo se usa la API para crear una política de alertas de tasa de consumo. Para obtener información sobre cómo listar, modificar y eliminar políticas de alertas, consulta Gestionar políticas de alertas mediante la API.
Protocolo
Para crear la política de alertas concurl
, envía un mensaje POST
al endpoint https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/alertPolicies
y proporciona la política de alertas en el cuerpo de la solicitud. El JSON del cuerpo de la solicitud describe una política de alertas que usa una condición de umbral basada en el selector de series temporales select_slo_burn_rate
con un periodo retrospectivo de una hora.
Crea una variable para almacenar 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 )
Envía la solicitud al 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