Casos de uso dos alertas de MQL

As políticas de alertas com uma condição baseada na linguagem de consulta do Monitoring (MQL, na sigla em inglês) permitem configurar o ambiente de alertas para muitos casos de uso possíveis. Algumas configurações estão disponíveis apenas com o uso de consultas MQL.

Neste documento, descrevemos vários casos de uso e exemplos de consultas para implantar políticas de alertas com uma condição baseada em MQL em um ambiente de produção.

Alerta sobre limites dinâmicos

É possível usar uma consulta MQL para configurar uma política de alertas que aciona alertas com base em um limite que varia ao longo do tempo, como os dias da semana. Essa configuração não é compatível com as condições da política de alertas sem consultas MQL.

Por exemplo, você tem uma consulta MQL que envia um alerta se a utilização da CPU de uma instância do Compute Engine exceder 95%:

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

No entanto, você quer definir um limite de utilização mais baixo, como 85%, para fins de semana, para compensar os tempos de resposta mais longos da equipe de suporte. Nesse caso, é possível configurar sua consulta com uma coluna de valor que contenha o limite de alerta:

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)

As operações value fazem o seguinte:

  • value add [day_of_week: end().timestamp_to_string('%w').string_to_int64] adiciona uma coluna de valor cujo valor é um número entre 0 e 6, em que 0 é domingo e 6 é sábado.
  • value [utilization, is_weekend: day_of_week = 0 || day_of_week = 6] substitui o número do dia por um booleano que indica se o ponto de dados ocorreu em um fim de semana ou dia da semana.
  • value [utilization, max_allowed_utilization: if(is_weekend, 85'%', 95'%')] substitui o booleano por um limite que varia de acordo com o valor de is_weekend.

A condição, condition utilization > scale(max_allowed_utilization), compara as duas colunas de valor.

Para conferir um exemplo de política de alertas com uma condição baseada em MQL que configura níveis de gravidade de incidente com base em critérios dinâmicos, consulte Criar níveis de gravidade dinâmicos usando o MQL.

Alerta sobre limites com base na taxa de alteração

É possível configurar consultas MQL da política de alertas para avaliar limites com base na taxa de mudança de uma métrica. Por exemplo, você quer avaliar a taxa de erros 5xx por instância de resource.method nas solicitações de API, em que a taxa é equivalente às solicitações por segundo. Se a taxa for maior que cinco respostas de erro por segundo, o Cloud Monitoring vai enviar um 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'

É possível criar políticas de alertas de taxa de mudança sem usar o MQL:

Alerta sobre limites baseados em proporção

Sua política de alertas pode usar uma consulta MQL para avaliar as proporções derivadas mesclando duas métricas e dividindo as colunas de valor. Por exemplo, você quer consultar a proporção de read bytes em comparação com write bytes para cada uma das instâncias do Compute Engine. Se a proporção for maior que 3/5 ou 60%, o Cloud Monitoring vai enviar um 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

Também é possível consultar a proporção de valores agregados. Por exemplo, você quer calcular o tempo médio de uso da CPU por núcleo nas instâncias do Compute Engine. Se a proporção for maior que 3/5 ou 60%, o Cloud Monitoring vai enviar um 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

É possível criar políticas de alertas com base em proporção sem usar o MQL: