Casos de uso para las alertas de MQL

Las políticas de alertas con una condición basada en el lenguaje de consulta de Monitoring (MQL) te permiten configurar el entorno de alertas para muchos casos de uso posibles. Algunas opciones de configuración solo están disponibles mediante el uso de consultas de MQL.

En este documento, se describen varios casos de uso y consultas de muestra para implementar políticas de alertas con una condición basada en MQL en un entorno de producción.

Alerta sobre umbrales dinámicos

Puedes usar una consulta de MQL para configurar una política de alertas que active alertas según un umbral que varíe con el tiempo, como los días de la semana. Esta configuración no es compatible con las condiciones de la política de alertas sin consultas de MQL.

Por ejemplo, tienes una consulta de MQL que envía una alerta si el uso de CPU de una instancia de Compute Engine supera el 95%:

fetch gce_instance :: compute.googleapis.com/instance/cpu/utilization
| align
| every 30s
| condition utilization > 95'%'

Sin embargo, quieres establecer un umbral de uso más bajo, como un 85%, para los fines de semana, para tener en cuenta los tiempos de respuesta más largos de tu equipo de asistencia al cliente. En este caso, puedes configurar tu consulta con una columna de valores que contenga el umbral de alertas:

fetch gce_instance :: compute.googleapis.com/instance/cpu/utilization
| align
| every 30s
| value add [day_of_week: end().timestamp_to_string('%w').string_to_int64]
| value [utilization, is_weekend: day_of_week = 0 || day_of_week = 6]
| value [utilization, max_allowed_utilization: if(is_weekend, 85'%', 95'%')]
| condition utilization > scale(max_allowed_utilization)

Las operaciones value hacen lo siguiente:

  • value add [day_of_week: end().timestamp_to_string('%w').string_to_int64] agrega una columna de valores cuyo valor es un número entre 0 y 6, donde 0 es el domingo y 6 es el sábado.
  • value [utilization, is_weekend: day_of_week = 0 || day_of_week = 6] reemplaza tu número de día por un valor booleano que indica si los datos fueron durante un fin de semana o un día de la semana.
  • value [utilization, max_allowed_utilization: if(is_weekend, 85'%', 95'%')] reemplaza el valor booleano por un umbral que varía según el valor de is_weekend.

La condición, condition utilization > scale(max_allowed_utilization), compara las dos columnas de valores.

Para ver un ejemplo de una política de alertas con una condición basada en MQL que configura los niveles de gravedad del incidente según criterios dinámicos, consulta Crea niveles de gravedad dinámicos mediante MQL.

Alerta sobre umbrales basados en la tasa de cambio

Puedes configurar las consultas de MQL de la política de alertas para evaluar los umbrales en función de la tasa de cambio de una métrica. Por ejemplo, si deseas evaluar la tasa de errores 5xx por instancia de resource.method en las solicitudes a la API, en la que tu tasa es equivalente a las solicitudes por segundo. Si la tasa es superior a 5 respuestas de error por segundo, Cloud Monitoring envía una alerta:

fetch consumed_api
| metric 'serviceruntime.googleapis.com/api/request_count'
| filter (metric.response_code_class == '5xx')
| align rate(10m)
| every 30s
| group_by [resource.method],
    [value_request_count_mean: mean(value.request_count)]
| condition val() > 0.05'1/s'

Puedes crear políticas de alertas de tasa de cambio sin usar MQL:

Alerta sobre los umbrales basados en la proporción

Tu política de alertas puede usar una consulta de MQL para evaluar las proporciones derivadas mediante la unión de dos métricas y, luego, la división de las columnas de valores. Por ejemplo, si quieres consultar la proporción de read bytes en comparación con los write bytes de cada una de tus instancias de Compute Engine. Si la proporción es superior a 3/5 o al 60%, Cloud Monitoring envía una alerta:

{
  fetch gce_instance :: compute.googleapis.com/instance/disk/read_bytes_count;
  fetch gce_instance :: compute.googleapis.com/instance/disk/write_bytes_count
}
| every 30s
| join
| value val(0) / val(1)
| condition val() > 0.6

También puedes consultar la proporción de valores agregados. Por ejemplo, si quieres calcular el tiempo de uso de CPU promedio por núcleo en tus instancias de Compute Engine. Si la proporción es superior a 3/5 o al 60%, Cloud Monitoring envía una alerta:

{
  fetch gce_instance :: compute.googleapis.com/instance/cpu/usage_time
  | group_by [], .sum;
  fetch gce_instance :: compute.googleapis.com/instance/cpu/reserved_cores
  | group_by [], .sum
}
| every 30s
| ratio
| condition val() > 0.6

Puedes crear políticas de alertas basadas en la proporción sin usar MQL: