As expressões de regras de alerta permitem configurar condições complexas durante a criação de uma regra. Uma expressão consiste em elementos básicos, como nomes de métricas, operadores e funções, além de suportar comparação com dados históricos.
Elementos
O Cloud Monitor avalia as expressões das regras de alerta com base nos dados agregados das métricas ou em instâncias individuais. Se os dados de monitoramento atenderem à expressão, o sistema acionará um alerta. A expressão consiste em nomes de métricas, membros de métricas, operadores, funções e dados de monitoramento. Exemplo: @cpu_total[60].$instanceId != 'i-2ze3jvsy7620giru****' && @cpu_total[60].$Average > 60.
-
Nomes de métricas
Para obter mais informações sobre as métricas dos diferentes serviços em nuvem, consulte Apêndice 1: Métricas para produtos Alibaba Cloud.
Uma expressão de métrica utiliza o formato
@Nome da métrica[Período de agregação]. Por exemplo, para monitorar uma instância do Elastic Compute Service (ECS) com base na métrica CPUUtilization, use@CPUUtilization[60].NotaO período de agregação das métricas do ECS aparece na coluna Min Periods da tabela na Página de lista de métricas do ECS. Para visualizar o período de agregação de outro serviço em nuvem, selecione o serviço na lista suspensa.
O nome da métrica deve obedecer à expressão regular
[a-zA-Z][_a-zA-Z0-9]*. Caso contrário, utilize o formato@(Nome da métrica)[Período de agregação], por exemplo,@('vm.DiskIORead')[60].
Combine os nomes das métricas com os membros das métricas para definir o escopo dos dados de monitoramento.
-
Membros de métricas
Os membros de métricas definem o escopo dos dados de monitoramento para uma determinada métrica. Um membro de métrica deve começar com o cifrão ($). Utilize o formato
@Nome da métrica[Período de agregação].$Membro da métrica. Por exemplo, os métodos estatísticos para a métrica CPUUtilization do ECS são Average, Minimum e Maximum. A expressão para o valor médio é@CPUUtilization[60].$Average. As dimensões da métrica CPUUtilization do ECS sãouserIdeinstanceId. A expressão para uma instância específica é@CPUUtilization[60].$instanceId.NotaOs membros das métricas do ECS aparecem nas colunas Dimensions e Statistics da tabela na Página de lista de métricas do ECS. Para visualizar os membros de métricas de outro serviço em nuvem, selecione o serviço na lista suspensa.
-
Operadores
Os operadores avaliam se os dados de monitoramento atendem à condição de alerta.
-
Operadores básicos
Categoria
Operador e descrição
Operadores matemáticos
-
+: adição -
-: subtração -
*: multiplicação -
/: divisão -
%: módulo -
**: exponenciação
Operadores de comparação
-
==: igual a -
! =: diferente de -
>: maior que -
>=: maior ou igual a -
<: menor que -
<=: menor ou igual a
Operadores lógicos
-
&&ouand: E lógico -
||ouor: OU lógico -
!ounot: NEGAÇÃO lógica
Exemplo:
$Average > 50 && $instanceId != 'i-not-exist'.NotaSe os valores em ambos os lados de um operador matemático ou de comparação não forem do mesmo tipo, o sistema converterá a string em número. Por exemplo:
'123' + 321 == 123 + '321' == 444. -
-
Operadores de string
Operador de string
Descrição
Exemplo
matches
Corresponde a uma expressão regular.
Use o operador lógico NOT com
matchespara negar uma correspondência de expressão regular.!("hello" matches "^fo.+")NotaO operador
!tem prioridade maior que o operador matches. Portanto, coloque a expressão regular entre parênteses ().contains
Contém uma string.
'abcdef' contains 'cde'startsWith
Verifica se uma string começa com um prefixo especificado.
'abcdef' startsWith 'abc'endsWith
Verifica se uma string termina com um sufixo especificado.
'abcdef' endsWith 'def' -
Operadores de pertinência
Operador de pertinência
Descrição
Exemplo
in
Contém
-
userld in [120886317861****, 425876]O valor de
userldé120886317861**ou20654616023382**. -
"foo" in {'foo':1, 'bar':2}O valor de foo é
foooubar.
not in
Não contém
-
userld not in [120886317861****, 425876]O valor de
userldnão é120886317861**nem20654616023382**. -
"foo" not in {'foo1':1, 'bar':2}O valor de foo não é
foo1nembar.
-
-
Operadores ternários
?:: Funciona da mesma forma que o operador ternário em C e Java. Exemplo: @CPUUtilization[60].$Average > 30? "ok": "lower".
-
-
Operações de dados
-
Tipos de dados
Tipo de dado
Descrição
Exemplo
string
Uma string entre aspas simples ou duplas.
"hello", 'hello'number
Um número inteiro ou de ponto flutuante.
NotaPara números inteiros, use sublinhados (_) como separadores para melhorar a legibilidade.
-
103, 2,5, .5, 2e+6 -
1_000_000
array
Um array.
[1, 2, 3]map ou dict
Um dicionário.
{"foo":"bar"}bool
Um valor booleano.
trueoufalsenil
Um valor vazio.
nil -
-
Funções integradas
Função integrada
Descrição
`len(arraymap
string)`
Retorna o comprimento de um array, mapa ou string.
now()Retorna um carimbo de data/hora UTC em milissegundos.
abs(number)Retorna o valor absoluto (um número de ponto flutuante).
rand()Retorna um número de ponto flutuante entre
[0, 1).rand(N)Retorna um número de ponto flutuante entre
[0, N).toLower(string)Converte uma string para minúsculas.
toUpper(string)Converte uma string para maiúsculas.
-
Comparação
NotaExemplo de métrica:
@cpu_total[60].Um método de agregação é uma string. Exemplo:
'$Average'.O resultado da comparação é um valor booleano. Se o valor da métrica no período atual for maior que o valor da métrica no período anterior, o resultado será
true. Se o valor da métrica no período atual for menor que o valor da métrica no período anterior, o resultado seráfalse.
Função
Descrição
CompareLastPeriod(metric, aggregation method, comparison result)Retorna a variação percentual em relação ao período anterior. Exemplo:
CompareLastPeriod(@cpu_total[60], '$Average', true).Por exemplo, se o valor médio de cpu_total no período atual for 20% e no período anterior for 15%, o valor retornado dependerá do resultado da comparação.
-
Se o resultado da comparação for
true, esta função retorna (20 - 15) × 100/20. -
Se o resultado da comparação for
false, esta função retorna (15 - 20) × 100/20.
CompareLastHour(metric, aggregation method, comparison result)Retorna a variação percentual em relação à hora anterior.
CompareLastHour(@cpu_total[60], '$Average', true) > 10: Se o valor médio de cpu_total aumentar 10% em relação à hora anterior, o sistema acionará um alerta.CompareLastWeek(metric, aggregation method, comparison result)Obtém os dados comparados ao dia anterior.
CompareYesterday(@cpu_total[60], '$Average', true) > 10: Se o valor médio de cpu_total aumentar 10% em relação à semana anterior, o sistema acionará um alerta.CompareLastWeek(metric, aggregation method, comparison result)Obtém os dados comparados à semana anterior.
CompareLastWeek(@cpu_total[60], '$Average', true) > 10: Se o valor médio de cpu_total aumentar 10% em relação à semana anterior, o sistema acionará um alerta.ComparePast(metric, aggregation method, comparison result, seconds)Retorna a variação percentual em relação ao número especificado de
secondsanteriores ao horário atual.As quatro funções anteriores são formas simplificadas desta função.
-
CompareLastHour(@cpu_total[60], '$Average', true)equivale aComparePast(@cpu_total[60], '$Average', true, 3600). -
CompareYesterday(@cpu_total[60], '$Average', true)equivale aComparePast(@cpu_total[60], '$Average', true, 246060). -
CompareLastWeek(@cpu_total[60], '$Average', true)equivale aComparePast(@cpu_total[60], '$Average', true, 72460*60).
-
Funções históricas
Função
Descrição
LastPeriod(metric)Retorna os dados do período anterior. Exemplo:
LastPeriod(@cpu_total[60]).$Average > 75. Se o valor médio decpu_totalno período anterior exceder 75%, o sistema acionará um alerta.LastHour(metric)Retorna os dados da hora anterior. Exemplo:
LastHour(@cpu_total[60]).$Average > 75. Se o valor médio decpu_totalna hora anterior exceder 75%, o sistema acionará um alerta.Yesterday(metric)Retorna os dados do dia anterior. Exemplo:
Yesterday(@cpu_total[60]).$Average > 75. Se o valor médio decpu_totalno dia anterior exceder 75%, o sistema acionará um alerta.LastWeek(metric)Retorna os dados da semana anterior. Exemplo:
LastWeek(@cpu_total[60]).$Average > 75. Se o valor médio decpu_totalna semana anterior exceder 75%, o sistema acionará um alerta.Past(metric, seconds)Retorna os dados do número especificado de segundos anteriores ao horário atual. O número deve ser um múltiplo integral do período de agregação da métrica. As funções anteriores são formas abreviadas desta função. Por exemplo,
Past(@cpu_total[60], 3600) > 75equivale aLastHour(@cpu_total[60]).$Average > 75.
-
Cenários
A tabela a seguir lista cenários comuns para expressões de regras de alerta.
|
Cenário |
Expressão da regra de alerta |
Descrição |
|
Defina um limiar dedicado para uma instância específica e um limiar diferente para outras instâncias |
|
Para a instância |
|
Excluir uma instância específica do alerta |
|
Para a instância |
|
Configure uma condição de alerta com base em várias métricas |
|
Se o valor médio de cpu_total de uma instância exceder 50% e o valor médio de memory_usage da mesma instância exceder 80%, o sistema acionará um alerta. |
|
Visualize a latência de relatório da métrica |
|
Se o tempo limite do heartbeat exceder um minuto, o sistema acionará um alerta. Nota
O parâmetro reportTime indica quando uma métrica foi relatada. É um parâmetro integrado de cada métrica. A função |