Referência do Monitoring Query Language (MQL)

Entenda a sintaxe de expressões MQL (Monitoring Query Language) e revise os valores válidos para operadores de intervalo, estatística e predicado nas expressões MQL.

Para obter informações sobre a edição do MQL , consulte Editando a Expressão MQL para uma Consulta. Para recuperar um intervalo de tempo específico, como a última hora, consulte Selecionando um Intervalo de Tempo Não Padrão para uma Consulta.

Sintaxe MQL

A sintaxe do MQL  controla expressões para consultar métricas publicadas no serviço Monitoring. As expressões MQL definem consultas (incluindo consultas de alarme). O MQL atua nos dados agregados.

O diagrama a seguir fornece uma representação simples dos componentes obrigatórios e dos componentes opcionais comuns.

Observação

Alguns componentes podem aparecer em uma expressão MQL várias vezes. Por exemplo, você pode usar duas funções de agrupamento (como em groupBy(), seguido por uma estatística, seguida por grouping()). Você também pode iniciar consultas.

Você também pode juntar várias consultas em uma única consulta.

Para alarmes na Console, a estatística absent() é listada em Operador. Consulte Criando um Alarme de Ausência.

Mais informações sobre absent() na Console

Para selecionar a estatística absent() na Console, consulte as seguintes instruções específicas da página.

  • Criar Alarme ou página Editar alarme: No modo Básico, selecione ausente em Operador em Regra do acionador. No modo Avançado (clique em Alternar para Modo Avançado), atualize a expressão MQL.
  • Página Explorador de Métricas: Clique em Modo Avançado para usar o MQL.
  • Página Métricas do Serviço: Abra a consulta no Explorador de Métricas e clique em Modo Avançado para usar o MQL.
Expressão MQL.

Para obter informações sobre como ler diagramas ferroviários, consulte Lendo Diagramas Ferroviários.

Valores Válidos para Expressões MQL

Verifique valores válidos para operadores de intervalo, estatística e predicado em expressões MQL.

Intervalo

Observação

Com o intervalo, considere a resolução e o intervalo de tempo.

Os valores suportados para intervalo dependem do intervalo de tempo especificado na consulta de métrica (não aplicável a consultas de alarme). Mais valores de intervalo são suportados para intervalos de tempo menores. Por exemplo, se você selecionar uma hora para o intervalo de tempo, todos os valores de intervalo serão suportados. Se você selecionar 90 dias para o intervalo de tempo, só haverá suporte para os valores de intervalo entre 1 hora e 1 dia.

Selecione um intervalo de alarme com base na frequência na qual a métrica é emitida. Por exemplo, uma métrica emitida a cada cinco minutos requer um intervalo de alarme de 5 minutos ou mais. A maioria das métricas é emitida a cada minuto, o que significa que a maioria das métricas suporta qualquer intervalo de alarme. Para determinar intervalos de alarme válidos para uma métrica específica, verifique a referência de métrica do serviço relevante.

Exemplo: Intervalo de Um Minuto (1m)
CpuUtilization[1m].mean()

Estes são os intervalos válidos para expressões MQL: 1m-60m, 1h-24h, 1d

Para obter instruções, consulte Selecionando o Intervalo de uma Consulta.

Observação

Para consultas de métrica, o intervalo selecionado aciona a resolução padrão da solicitação, que determina o intervalo máximo de tempo dos dados retornados.

Para consultas de alarme, o intervalo  especificado não tem efeito na resolução  da solicitação. O único valor válido da resolução de uma solicitação de consulta de alarme é 1m. Para obter mais informações sobre o parâmetro de resolução como usado em consultas de alarme, consulte Alarme.

Intervalo de tempo máximo retornado para uma consulta

O intervalo de tempo máximo retornado para uma consulta de métrica depende da resolução. Por padrão, para consultas de métrica, a resolução é a mesma do intervalo de consulta.

O intervalo de tempo máximo é calculado usando o horário atual, independentemente de qualquer horário final especificado. A seguir estão os intervalos de tempo máximos retornados para cada seleção de intervalo disponível na Console (Modo básico).

Intervalo Resolução padrão (consultas de métrica) Intervalo de tempo máximo retornado

1 minuto

Auto (página Métricas de Serviço)*, quando o período selecionado é de 6 horas ou menos

1 minuto 7 dias

5 minutos

Auto ( página Métricas de Serviço)*, quando o período selecionado é maior que 6 horas e menor que 36 horas

5 minutos 30 dias

1 hora

Auto (página Métricas de Serviço), quando o período selecionado é mais de 36 horas

1 hora 90 dias

1 dia

1 dia 90 dias

* O intervalo de tempo máximo retornado quando você seleciona Auto para Intervalo (página Métricas de Serviço somente) é determinado pela seleção do intervalo automático. A seleção automática de intervalo é baseada no período selecionado.

Para especificar uma resolução não padrão diferente do intervalo, consulte Selecionando uma Resolução Não Padrão para uma Consulta.

Exemplo 1 para Dados Retornados
Intervalo e resolução de um minuto até a hora atual, enviados às 10:00 em 8 de janeiro. Nenhuma resolução ou horário final foi especificado, portanto, a resolução assume como padrão o valor do intervalo de 1m e o horário final é definido como o horário atual (2023-01-08T10:00:00.789Z). Esta solicitação retorna um máximo de 7 dias de pontos de dados da métrica. O ponto de dados mais antigo possível dentro desse período de sete dias seria 10:00 em 1º de janeiro (2023-01-01T10:00:00.789Z).
Exemplo 2 para Dados Retornados
Intervalo de cinco minutos com resolução de um minuto até dois dias atrás, enviado às 10:00 em 8 de janeiro. Como a resolução conduz ao intervalo de tempo máximo, é retornado um máximo de 7 dias de pontos de dados da métrica. Embora o horário final especificado seja 10:00 em 6 de janeiro (2023-01-06T10:00:00.789Z), o ponto de dados mais antigo possível nesse período de sete dias seria 10:00 em 1º de janeiro (2023-01-01T10:00:00.789Z). Portanto, apenas 5 dias de pontos de dados da métrica podem ser retornados neste exemplo.

Estatística

A estatística é a função de agregação aplicada ao conjunto de pontos de dados brutos no intervalo especificado.

Exemplo: Estatística Média
CpuUtilization[1m].mean()

Para obter instruções, consulte Selecionando a Estatística de uma Consulta.

Veja a seguir as estatísticas válidas.

Estatística (expressão MQL) Opção de estatística (Modo Básico na Console) Descrição
absent() (consulte o operador absent)

Predicado de ausência.

Retorna verdadeiro (1) se a métrica estiver ausente para todo o intervalo.

Retornará falso (0) se a métrica estiver presente durante o intervalo.

É ignorado após duas horas, não gerando valores.

Use essa estatística em consultas básicas, bem como alarmes de ausência. Consulte Especificando um Predicado em uma Consulta.

avg() (não disponível) Retorna o valor da Soma dividido pela Contagem durante o intervalo especificado. Idêntico a mean().
count() Contagem Retorna o número de observações recebidas no intervalo especificado.
first() (não disponível) Para cada intervalo, retorna o valor com o timestamp mais antigo no intervalo especificado.
increment() (não disponível) Retorna a alteração por intervalo.
last() (não disponível) Para cada intervalo, retorna o valor com o timestamp mais recente no intervalo especificado.
max() Máximo Retorna o valor mais alto observado durante o intervalo especificado.
mean() Média Retorna o valor da Soma dividido pela Contagem durante o intervalo especificado.
min() Mín. Retorna o valor mais baixo observado durante o intervalo especificado.
percentile(p)

P50

P90

P95

P99

P99.9 (somente página Métricas do Serviço)

Retorna o valor estimado do percentil especificado (p ao usar SDK, CLI ou API) durante o intervalo especificado. Os valores válidos são maiores que 0,0 e menores que 1,0.

Por exemplo, percentile(0.8) retorna o valor do 80º percentil.

rate() Taxa Retorna a taxa média de alteração por intervalo. A unidade é por segundo.
sum() Soma Retorna todos os valores adicionados juntos, por intervalo.

Operadores de Predicado

O componente de predicado mantém apenas valores especificados dos streams de métrica. Use um operador de predicado para definir um limite ou uma ausência.

Exemplo 1: Maior que 80% para Utilização Média de CPU
CpuUtilization[1m].mean() > 80
Exemplo 2: Entre 60 e 80% para a Utilização Média de CPU
CpuUtilization[1m].mean() in (60, 80)
Exemplo 3: Maior que 1 para Erros
ServiceConnectorHubErrors[1m].count() > 1
Exemplo 4: Maior que 85 para Percentil 90 de Utilização de CPU (Selecionando um Domínio de Disponibilidade e Agrupando por Pool)
CpuUtilization[1m]{availabilityDomain = "VeBZ:PHX-AD-1"}.groupBy(poolId).percentile(0.9) > 85
Exemplo 5: Pelo Menos 20 para Utilização Mínima de CPU (Selecionando "ol8" ou "ol7")
CpuUtilization[1m]{resourceDisplayName =~ "ol8|ol7"}.min() >= 20
Exemplo 6: Pelo menos 30 para Utilização Mínima de CPU (Selecionando Nomes de Instância que Começam com "instance-2023-")
CpuUtilization[1m]{resourceDisplayName =~ "instance-2023-*"}.min() >= 30
Exemplo 7: Ausência de Métricas de Utilização de CPU para Recurso Especificado
CpuUtilization[1m]{resourceId = "<resource_identifier>"}.groupBy(resourceId).absent()
Descrição absent(): Retorna verdadeiro (1) se a métrica estiver ausente para todo o intervalo. Retorna falso (0) se a métrica estiver presente durante o intervalo. É ignorado após duas horas, não gerando valores.

Para obter instruções, consulte Especificando um Predicado em uma Consulta.

Veja a seguir os operadores válidos.

Operador (expressão MQL) Opção Operador (Modo Básico na Console) Comentários
> maior que
>= maior que ou igual a
== igual a
=~ (não disponível) Fuzzy Matching.
!= (não disponível) Diferente de.
< menor que
<= menor que ou igual a
in entre (incluindo valores especificados) Incluindo os dois valores especificados.
not in fora (incluindo de valores especificados) Incluindo os dois valores especificados.
(consulte a estatística absent()) ausente

Predicado de ausência.

Retorna verdadeiro (1) se a métrica estiver ausente para todo o intervalo.

Retornará falso (0) se a métrica estiver presente durante o intervalo.

É ignorado após duas horas, não gerando valores.

Use essa estatística em consultas básicas, bem como alarmes de ausência. Consulte Especificando um Predicado em uma Consulta.

Para obter instruções sobre alarme, consulte Criando um Alarme de Limite e Criando um Alarme de Ausência.

Operadores Aritméticos

Os operadores aritméticos a seguir são suportados em expressões MQL.

Operador Descrição
+ Adicionar
- Subtrair
* Multiplicar
/ Divide
% Módulo (dividir e devolver restante)

Consultas de Junção

Use os operadores && (AND) e || (OR) para unir consultas. Várias consultas unidas atuam como uma única consulta.

Observação

Os operadores && (AND) e || (OR) só podem ser usados entre consultas. Não use-os entre conjuntos de dimensões. Por exemplo, a seguinte consulta é inválida: CpuUtilization[1m]{faultDomain =~ "FAULT-DOMAIN-1|FAULT-DOMAIN-2" || resourceDisplayName = "test"}.mean()
Operador de junção Descrição
&& AND: Associar consultas. Retorna verdadeiro se os dois operandos forem verdadeiros. De outra forma, retorna falso.
|| OR: Consultas de junção. Retorna verdadeiro se um operando for verdadeiro ou se os dois operandos forem verdadeiros. De outra forma, retorna falso.

Exemplo 1: Unir consultas com OR. Retornará verdadeiro se o ponto de dados de utilização da CPU estiver no domínio de falha 1 ou 2 OU se o ponto de dados de utilização da memória estiver no domínio de falha 1 ou 2.

CpuUtilization[1m]{faultDomain =~ "FAULT-DOMAIN-1|FAULT-DOMAIN-2"}.mean() || MemoryUtilization[1m]{faultDomain =~ "FAULT-DOMAIN-1|FAULT-DOMAIN-2"}.mean()

Exemplo 2: Una consultas de alarme com AND. Acione o alarme (transição para o estado de acionamento) somente quando ambas as consultas forem verdadeiras: existe pelo menos um erro E o erro médio é maior que a metade.

ServiceConnectorHubErrors[1m].count() > 1 && ServiceConnectorHubErrors[1m].mean() > 0.5

Exemplo 3: Una consultas de alarme com AND. Acione o alarme (transição para o estado de acionamento) somente quando ambas as consultas forem verdadeiras: para leituras menores (0 a 8 Kilobytes), o percentil 50 das solicitações excede 100 E a latência média é menor que 0,01.

FileSystemReadRequestsBySize[5m]{resourceType = "filesystem", size = "0B_to_8KiB"}.percentile(.50) > 100 && FileSystemReadAverageLatencybySize[5m]{resourceType = "filesystem", size = "0B_to_8KiB"}.mean() > 0.01

Correspondência Difusa

Especifique correspondências aproximadas ("parciais") com valores de dimensão em uma expressão MQL.

Use a correspondência difusa ao especificar vários valores para um nome de dimensão.

No lugar do sinal de igual (=) antes do conjunto de valores, use o operador de comparação a seguir.

Operador de comparação Descrição
=~ (sinal de igual seguido por til) Aproximadamente igual a. Usar para correspondências parciais

Para correspondência parcial, coloque o conjunto de valores entre aspas: name = "val*" ou name = "value1|value2"

Atualize o conjunto de valores usando um ou mais dos caracteres a seguir.

Caractere de Correspondência Parcial de Valor Descrição
* (asterisco) Curinga, indicando de zero a muitos caracteres.
| (barra vertical) Operando OR para valores de dimensão.

Exemplo mostrando correspondência difusa para dois nomes de recursos possíveis ("ol8" ou "ol7"):

CpuUtilization[1m]{resourceDisplayName =~ "ol8|ol7"}.min() >= 20

Exemplo mostrando correspondência difusa para nomes de recursos contendo a frase "instance-2023-":

CpuUtilization[1m]{resourceDisplayName =~ "instance-2023-*"}.min() >= 30

Exemplo mostrando a correspondência parcial para três conjuntos de valores de dimensão (instâncias de computação de teste no domínio de falha 1 que usam a forma myshape):

CpuUtilization [1m]{faultDomain =~ "FAULT-DOMAIN-1", resourceDisplayName =~ "test*", shape =~ "myshape"}.mean()