Casos de uso para alertas de MQL

Políticas de alertas con una condición basada en el lenguaje de consulta de Monitoring (MQL) te permiten configurar tu entorno de alertas para muchos casos de uso posibles. Ciertas configuraciones están disponibles solo mediante el uso de Consultas 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 activa alertas en función de un umbral que varía con el tiempo, como como los días de la semana. Esta configuración no es compatible con las alertas condiciones de la política 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, le recomendamos que establezca un umbral de uso más bajo, como del 85%, fines de semana, para compensar los tiempos de respuesta más prolongados por parte del equipo de asistencia al cliente. En este caso, podrías configurar tu consulta con una columna de valor 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 valor cuyo valor es un número entre 0 y 6, donde 0 es el domingo y 6 el sábado.
  • value [utilization, is_weekend: day_of_week = 0 || day_of_week = 6] reemplaza el número de día con un valor booleano que indica si el punto de datos fue un fin de semana o un día de semana.
  • value [utilization, max_allowed_utilization: if(is_weekend, 85'%', 95'%')] reemplaza al booleano con 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 un ejemplo de una política de alertas con una condición basada en MQL que configura los niveles de gravedad del incidente en función de criterios dinámicos, consulta Crea niveles de gravedad dinámicos con MQL.

Alerta sobre los umbrales basados en la tasa de cambio

Puedes configurar las consultas de MQL de la política de alertas para evaluar umbrales según la tasa de cambio de una métrica. Por ejemplo, quieres evaluar la tasa de 5xx errores por instancia de resource.method en las Solicitudes a la API, en las que tu tasa es equivalente a las solicitudes por segundo Si la tasa es mayor de 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 umbrales basados en la proporción

Tu política de alertas puede usar una consulta de MQL para evaluar proporciones derivadas uniendo dos métricas y dividiendo las columnas de valores. Por ejemplo, quieres consultar la proporción de read bytes en comparación con write. bytes para cada una de tus instancias de Compute Engine. Si la proporción es mayor que 3/5, o un 60%, entonces 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 los valores agregados. Por ejemplo, quieres calcular el tiempo de uso de CPU promedio por núcleo en tus instancias de Compute Engine individuales. Si la proporción es mayor que 3/5, o 60%, entonces Cloud Monitoring envía una alerta. En este ejemplo, también debes incluir una función cast_units para alinear las unidades de medida.

{
  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 | cast_units('s{CPU}')
}
| every 30s
| ratio
| condition val() > 0.6

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