Casos de uso de alertas do MQL

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. Determinadas configurações estão disponíveis somente por meio do uso de consultas MQL.

Este documento descreve vários casos de uso e exemplos de consulta 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 com o tempo, como como dias da semana. Esta configuração não é compatível com alertas condições de política sem consultas MQL.

Por exemplo: você tem uma consulta MQL que envia um alerta se o uso 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%, fins de semana, porque sua equipe de suporte terá tempos de resposta mais longos. Nesse caso, você pode 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 foi em um final de semana ou dia de 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.

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

Alerta sobre limites com base na taxa de mudança

É 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 5xx erros por instância de resource.method em seu Solicitações de API, em que a taxa é equivalente às solicitações por segundo. Se a taxa for maior que 5 respostas de erro por segundo, o Cloud Monitoring envia 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 com base na proporção

Sua política de alertas pode usar uma consulta MQL para avaliar proporções derivadas juntando duas métricas e, em seguida, dividindo as colunas de valor. Por exemplo, você quer consultar a proporção de read bytes em comparação com write bytes de cada uma das instâncias do Compute Engine. Se a proporção for maior que 3/5 ou 60%, o Cloud Monitoring 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 computar o tempo médio de uso da CPU por núcleo no Compute Engine instâncias. Se a proporção for maior que 3/5 ou 60%, O Cloud Monitoring envia um alerta. Neste exemplo, você também deve incluir Uma função cast_units para alinhar as 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

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