Usar matemática de métricas - do AmazonCloudWatch

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usar matemática de métricas

A matemática de métricas permite consultar várias métricas do CloudWatch e usar expressões matemáticas para criar novas séries temporais de acordo com essas métricas. Você pode visualizar as séries temporais resultantes no console do CloudWatch e adicioná-las aos painéis. Usando métricas do AWS Lambda como exemplo, você pode dividir a métrica Errors pela métrica Invocations para obter uma taxa de erro. Depois, adicione a série temporal resultante a um gráfico no painel do CloudWatch

Você também pode executar a matemática de métricas de forma programática usando a operação da API GetMetricData Para obter mais informações, consulte GetMetricData.

Adição de uma expressão matemática a um gráfico do CloudWatch

Você pode adicionar uma expressão matemática a um gráfico no painel do CloudWatch Cada gráfico é limitado a usar um máximo de 500 métricas e expressões, para que você possa adicionar uma expressão matemática somente se o gráfico tiver 499 métricas ou menos. Isso se aplica mesmo que nem todas as métricas sejam exibidas no gráfico.

Para adicionar uma expressão matemática a um gráfico

  1. Abra o console do CloudWatch em https://console.aws.amazon.com/cloudwatch/.

  2. Crie ou edite um gráfico. Deve haver pelo menos uma métrica no gráfico.

  3. Escolha Graphed metrics. (Métricas em gráfico).

  4. Selecione Math expression (Expressão matemática), Start with empty expression (Começar com expressão vazia). Uma nova linha é exibida para a expressão.

  5. Na nova linha, na coluna Details (Detalhes), insira a expressão matemática. As tabelas na seção Sintaxe matemática de métrica e funções listam as funções que podem ser usadas na expressão.

    Para usar uma métrica ou o resultado de outra expressão como parte da fórmula para essa expressão, use o valor mostrado na coluna Id: por exemplo, m1+m2 ou e1-MIN(e1).

    Você pode alterar o valor de Id. Ela pode incluir números, letras e sublinhado e deve começar com uma letra minúscula. Alterar o valor de Id para um nome mais significativo também pode facilitar o entendimento de um gráfico: por exemplo, a alteração de m1 e m2 para errors (erros) e requests (solicitações).

    dica

    Escolha a seta para baixo ao lado de Math Expression (Expressão matemática) para ver uma lista de funções compatíveis, que você pode usar ao criar sua expressão.

  6. Na coluna Label (Rótulo) da expressão, insira um nome que descreva o que a expressão está calculando.

    Se o resultado de uma expressão é uma matriz de séries temporais, cada uma dessas séries temporais é exibida no gráfico com uma linha separada, com cores diferentes. Imediatamente abaixo do gráfico está uma legenda para cada linha no gráfico. Para uma única expressão que produz várias séries temporais, as legendas para essas séries temporais estão no formato Expression-Label Metric-Label: Por exemplo, se o gráfico inclui uma métrica com um rótulo de Erros e uma expressão FILL(METRICS(), 0) que tem um rótulo Filled With 0:, uma linha na legenda seria Filled With 0: Errors. Para que a legenda mostre apenas os rótulos de métrica originais, defina Expression-Label estar vazio.

    Quando uma expressão produz uma matriz de séries temporais no gráfico, você não pode alterar as cores usadas para cada uma dessas séries temporais.

  7. Depois de adicionar as expressões desejadas, você pode simplificar o gráfico ocultando algumas das métricas originais. Para ocultar uma métrica ou expressão, desmarque a caixa de seleção à esquerda do campo Id.

Sintaxe de funções da matemática de métricas

As seções a seguir explicam as funções disponíveis para a matemática de métricas. Todas as funções devem ser escritas com letras maiúsculas (como AVG), e o campo Id de todas as métricas e expressões matemáticas devem começar com uma letra minúscula.

O resultado final de qualquer expressão matemática deve ser uma única série temporal ou um array de séries de tempo. Algumas funções escalares produzem um número. Você pode usar essas funções em uma função maior que, em última análise, produz uma série temporal. Por exemplo, o uso de AVG de uma única série temporal produz um número escalar, de forma que ele não pode ser o resultado final da expressão. Mas você pode usá-lo na função m1-AVG(m1) para exibir uma série temporal da diferença entre cada ponto de dados individual e o valor médio na série temporal.

Abreviações de tipos de dados

Algumas funções são válidas apenas para determinados tipos de dados. As abreviações na lista a seguir são usadas nas tabelas de funções para representar os tipos de dados compatíveis para cada função:

  • S representa um número escalar, como 2, -5 ou 50,25.

  • TS é uma série temporal (uma série de valores para uma única métrica do CloudWatch ao longo do tempo): por exemplo, a métrica CPUUtilization para a instância i-1234567890abcdef0 nos últimos 3 dias

  • TS[] é uma matriz de séries temporais, como a série temporal para várias métricas

A função METRICS()

A função METRICS() retorna todas as métricas na solicitação. As expressões matemáticas não são incluídas.

Você pode usar METRICS() em uma expressão maior que produz uma única série temporal ou uma matriz de séries temporais. Por exemplo, a expressão SUM(METRICS()) retorna uma série temporal (TS) que é a soma dos valores de todas as métricas incluídas em gráfico. METRICS()/100 retorna uma matriz de séries temporais, cada um sendo é uma série de tempo que mostra cada ponto de dados de uma das métricas dividido por 100.

Você pode usar a função METRICS() com uma string para retornar somente as métricas incluídas em gráfico que contêm essa string no campo Id. Por exemplo, a expressão SUM(METRICS("errors")) retorna uma série temporal que é a soma dos valores de todas as métricas incluídas em gráfico que contêm "erros" no campo Id. Você também pode usar SUM([METRICS(“4xx”), METRICS(“5xx”)]) para corresponder a várias strings.

Funções aritméticas básicas

A tabela a seguir lista as funções de aritmética básica compatíveis. Valores ausentes em uma séries temporal são tratados como 0. Se o valor de um ponto de dados fizer com que uma função tente dividir por zero, o ponto de dados será descartado.

Operação Argumentos Exemplos

Operadores aritméticos: + - * / ^

S, S

S, TS

TS, TS

S, TS[]

TS, TS[]

PERIOD(m1)/60

5 * m1

m1 - m2

SUM(100/[m1, m2])

AVG([m1,m2]/m3)

METRICS()*100

Subtração unária -

S

TS

TS[]

-5*m1

-m1

SUM(-[m1, m2])

Comparação e operadores lógicos

Você pode usar operadores lógicos e de comparação com um par de séries temporais ou um par de valores escalares únicos. Quando você usa um operador de comparação com um par de séries temporais, os operadores retornam uma série temporal em que cada ponto de dados é 0 (falso) ou 1 (verdadeiro). Se você usar um operador de comparação em um par de valores escalares, um único valor escalar será retornado, 0 ou 1.

Quando operadores de comparação são usados entre duas séries temporais, e apenas uma das séries temporais tem um valor para um time stamp específico, a função trata o valor ausente na outra série cronológica como 0.

Você pode usar operadores lógicos em conjunto com operadores de comparação, para criar funções mais complexas.

A tabela a seguir lista os operadores com suporte.

Tipo de operador Operadores compatíveis

Operadores de comparação

==

!=

<=

>=

<

>

Operadores lógicos

E ou &&

OR ou ||

Para ver como esses operadores são usados, suponha que temos duas séries temporais: metric1 tem valores de [30, 20, 0, 0] e metric2 tem valores de [20, -, 20, -], em que - indica que não há valor para esse timestamp.

Expressão Resultado

(metric1 < metric2)

0, 0, 1, 0

(metric1 >= 30)

1, 0, 0, 0

(metric1 > 15 AND metric2 > 15)

1, 0, 0, 0

Funções compatíveis com a matemática de métricas

A tabela a seguir descreve as funções que podem ser usadas em expressões matemáticas. Insira todas as funções em letras maiúsculas.

O resultado final de qualquer expressão matemática deve ser uma única série temporal ou um array de séries de tempo. Algumas funções em tabelas nas seções a seguir produzem um número escalar. Você pode usar essas funções em uma função maior que, em última análise, produz uma série temporal. Por exemplo, o uso de AVG de uma única série temporal produz um número escalar, de forma que ele não pode ser o resultado final da expressão. Mas você pode usá-lo na função m1-AVG(m1) para exibir uma série temporal da diferença entre cada ponto de dados individual e o valor médio desse ponto de dados.

Na tabela a seguir, cada exemplo na coluna Exemplos é uma expressão que resulta em uma única série temporal ou em uma matriz de séries temporais. Isso mostra como funções que retornam números escalares podem ser usadas como parte de uma expressão válida que produz uma única série temporal.

Função Argumentos Tipo de retorno* Descrição Exemplos

ABS

TS

TS[]

TS

TS[]

Retorna o valor absoluto de cada ponto de dados.

ABS(m1-m2)

MIN(ABS([m1, m2]))

ABS(METRICS())

ANOMALY_DETECTION_BAND

TS

TS, S

TS[]

Retorna um segmento de detecção de anomalias para a métrica especificada. O segmento consiste em duas séries temporais, um que representa o limite superior do valor "normal" esperado da métrica e o outro que representa o limite inferior. A função pode levar dois argumentos. O primeiro é o ID da métrica para o qual o segmento vai ser criado. O segundo argumento é o número de desvios-padrão a ser usado para o segmento. Se você não especificar esse argumento, é usado o padrão de 2. Para obter mais informações, consulte Usar a detecção de anomalias do CloudWatch.

ANOMALY_DETECTION_BAND(m1)

ANOMALY_DETECTION_BAND(m1,4)

AVG

TS

TS[]

S

TS

A AVG de uma única série temporal retorna um escalar que representa a média de todos os pontos de dados na métrica. A AVG de uma matriz de séries temporais retorna uma única série temporal. Valores ausentes são tratados como 0.

SUM([m1,m2])/AVG(m2)

AVG(METRICS())

CEIL

TS

TS[]

TS

TS[]

Retorna o teto de cada métrica. O teto é o menor valor inteiro maior ou igual a cada valor.

CEIL(m1)

CEIL(METRICS())

SUM(CEIL(METRICS()))

FILL

TS, TS/S

TS[], TS/S

TS

TS[]

Preenche os valores ausentes de uma métrica com o valor de preenchimento especificado quando os valores da métrica são escassos.

FILL(m1,10)

FILL(METRICS(), 0)

FILL(m1, MIN(m1))

FIRST

LAST

TS[]

TS

Retorna a primeira ou a última série temporal de uma matriz de séries temporais. Isso é útil quando usado com a função SORT. Ela também pode ser usada para obter os limites superior e inferior da função ANOMALY_DETECTION_BAND.

IF(FIRST(SORT(METRICS(), AVG, DESC))>100, 1, 0) examina a métrica superior de uma matriz, que é classificada por AVG. Depois, ele retorna 1 ou 0 para cada ponto de dados, dependendo se esse valor de ponto de dados é superior a 100.

LAST(ANOMALY_DETECTION_BAND(m1)) retorna o limite inferior da faixa de previsão de anomalia.

FLOOR

TS

TS[]

TS

TS[]

Retorna o piso de cada métrica. O piso é o maior valor inteiro menor ou igual a cada valor.

FLOOR(m1)

FLOOR(METRICS())

IF

Expressão IF

TS

Use IF junto com um operador de comparação para filtrar pontos de dados de uma série temporal ou criar uma série temporal mista composta por várias séries temporais agrupadas. Para obter mais informações, consulte Usar expressões IF.

INSIGHT_RULE_METRIC

INSIGHT_RULE_METRIC(ruleName, metricName)

TS

Use INSIGHT_RULE_METRIC para extrair estatísticas de uma regra no Contributor Insights. Para obter mais informações, consulte Criar gráfico de métricas geradas por regras Definir um alarme para os dados de métrica do Contributor Insights.

MAX

TS

TS[]

S

TS

O MAX de uma única série temporal retorna um escalar que representa o valor máximo de todos os pontos de dados na métrica. O valor de MAX de uma matriz de séries temporais retorna uma única série temporal.

MAX(m1)/m1

MAX(METRICS())

METRIC_COUNT

TS[]

S

Retorna o número de métricas na matriz de séries temporais.

m1/METRIC_COUNT(METRICS())

METRICS()

nulo

string

TS[]

A função METRICS() retorna todas as métricas do CloudWatch na solicitação. As expressões matemáticas não são incluídas.

Você pode usar METRICS() em uma expressão maior que produz uma única série temporal ou uma matriz de séries temporais.

Você pode usar a função METRICS() com uma string para retornar somente as métricas incluídas em gráfico que contêm essa string no campo Id. Por exemplo, a expressão SUM(METRICS("errors")) retorna uma série temporal que é a soma dos valores de todas as métricas incluídas em gráfico que contêm 'erros' no campo Id. Você também pode usar SUM([METRICS(“4xx”), METRICS(“5xx”)]) para corresponder a várias strings.

AVG(METRICS())

SUM(METRICS("errors"))

MIN

TS

TS[]

S

TS

O MIN de uma única série temporal retorna um escalar que representa o valor mínimo de todos os pontos de dados na métrica. O MIN de uma matriz de séries temporais retorna uma única série temporal.

m1-MIN(m1)

MIN(METRICS())

PERIOD

TS

S

Retorna o período da métrica em segundos. Entrada válida são métricas, não os resultados de outras expressões.

m1/PERIOD(m1)

RATE

TS

TS[]

TS

TS[]

Retorna a taxa de alteração da métrica por segundo. Isso é calculado como a diferença entre o último ponto de dados e o valor anterior, dividido pelo valor do ponto de dados a diferença de tempo em segundos entre os dois valores.

RATE(m1)

RATE(METRICS())

REMOVE_EMPTY

TS[]

TS[]

Remove todas as séries temporais que não tenham pontos de dados de uma matriz de séries temporais. O resultado é uma matriz de séries temporais em que cada série temporal contém pelo menos um ponto de dados.

REMOVE_EMPTY(METRICS())

SEARCH

Expressão de pesquisa

Uma ou mais TS

Retorna uma ou mais séries temporais que correspondem aos critérios de pesquisa que você especificar. A função SEARCH permite adicionar várias séries temporais relacionadas a um gráfico com uma expressão. O gráfico é atualizado dinamicamente para incluir novas métricas que serão adicionadas posteriormente e correspondem aos critérios de pesquisa. Para obter mais informações, consulte Usar expressões de pesquisa em gráficos.

SERVICE_QUOTA

TS que é uma métrica de uso

TS

Retorna a cota de serviço da métrica de uso determinada. É possível usar isso para visualizar como seu uso atual se compara à cota e para definir alarmes que avisam quando você se aproxima da cota. Para obter mais informações, consulte Integração às cotas de serviço e métricas de uso.

SLICE

(TS[], S, S) ou (TS[], S)

TS[]

TS

Recupera parte de uma matriz de séries temporais. Isso é especialmente útil quando combinado com SORT. Por exemplo, você pode excluir o resultado superior de uma matriz de séries temporais.

Você pode usar dois argumentos escalares para definir o conjunto de séries temporais a serem retornados. Os dois escalares definem o início (inclusive) e o fim (exclusivo) da matriz a serem retornados. A matriz é indexada por zero, portanto, a primeira série temporal na matriz é a série temporal 0. Como alternativa, você pode especificar apenas um valor e o CloudWatch retornará todas as séries temporais começando com esse valor.

SLICE(SORT(METRICS(), SUM, DESC), 0, 10) retorna as 10 métricas da matriz na solicitação que têm o valor SUM mais alto.

SLICE(SORT(METRICS(), AVG, ASC), 5) classifica a matriz de métricas pela estatística AVG e retorna todas as séries temporais, exceto as 5 com o menor AVG.

SORT

(TS[], FUNCTION, SORT_ORDER)

(TS[], FUNCTION, SORT_ORDER, S)

TS[]

Classifica uma matriz de séries temporais de acordo com a função especificada. A função que você usa pode ser AVG, MIN, MAX ou SUM. A ordem de classificação pode ser ASC para ordem crescente (valores mais baixos primeiro) ou DESC para classificar os valores mais altos primeiro. Você também pode especificar um número após a ordem de classificação que atua como um limite. Por exemplo, especificar um limite de 5 retorna apenas as 5 principais séries temporais da classificação.

Quando essa função matemática for exibida em um gráfico, os rótulos para cada métrica no gráfico também serão classificados e numerados.

SORT(METRICS(), AVG, DESC, 10) calcula o valor médio de cada série temporal, classifica as séries temporais com os valores mais altos no início da classificação e retorna apenas as 10 séries temporais com as médias mais altas.

SORT(METRICS(), MAX, ASC) classifica a matriz de métricas pela estatística MAX e retorna todas elas em ordem crescente.

STDDEV

TS

TS[]

S

TS

O STDDEV de uma única série temporal retorna um escalar que representa o desvio padrão de todos os pontos de dados na métrica. O STDDEV de uma matriz de séries temporais retorna uma única série temporal.

m1/STDDEV(m1)

STDDEV(METRICS())

SUM

TS

TS[]

S

TS

A SUM (SOMA) de uma única série temporal retorna um escalar que representa a soma dos valores de todos os pontos de dados na métrica. O SUM de uma matriz de séries temporais retorna uma única série temporal.

SUM(METRICS())/SUM(m1)

SUM([m1,m2])

SUM(METRICS("errors"))/SUM(METRICS("requests"))*100

*Não é permitido usar apenas uma função que retorne um número escalar, pois todos os resultados finais de expressões devem ser uma única série temporal ou uma matriz de séries temporais. Em vez disso, use essas funções como parte de uma expressão maior que retorne uma série temporal.

Usar expressões IF

Use IF junto com um operador de comparação para filtrar pontos de dados de uma série temporal ou criar uma série temporal mista composta por várias séries temporais agrupadas.

IF usa os seguintes argumentos:

IF(condition, trueValue, falseValue)

A condição será avaliada como FALSE se o valor do ponto de dados da condição for 0 e TRUE se o valor da condição for qualquer outro valor, se esse valor for positivo ou negativo. Se a condição for uma série temporal, ela será avaliada separadamente para cada time stamp.

O seguinte lista as sintaxes válidas. Para cada uma destas sintaxes, a saída é uma única série temporal.

  • SE(TS) Comparison Operator S, S | TS, S | TS)

  • IF(TS, TS, TS)

  • IF(TS, S, TS)

  • IF(TS, TS, S)

  • IF(TS, S, S)

  • IF(S, TS, TS)

As seções a seguir fornecem mais detalhes e exemplos para essas sintaxes.

SE(TS) Comparison Operator escalar2, escalar3 | métrica3

O valor da série de tempo de saída correspondente:

  • tem o valor de scalar2 ou metric2, se TS Comparison Operator verdadeiro é S

  • tem o valor de scalar3 ou metric3, se TS Comparison Operator S é FALSE

  • é uma série temporal vazia, se o ponto de dados correspondente não existir em metric3, ou se scalar3/metric3 for omitido da expressão

IF(métrica1, métrica2, métrica3)

para cada ponto de dados de metric1, o valor da série temporal de saída correspondente:

  • tem o valor de metric2, se o ponto de dados correspondente de metric1 for TRUE.

  • tem o valor de metric3, se o ponto de dados correspondente de metric1 for FALSE.

  • tem o valor de 0, se o ponto de dados correspondente de metric1 for TRUE e o ponto de dados correspondente não existir em metric2.

  • é descartado, se o ponto de dados correspondente de metric1 for FALSE e o ponto de dados correspondente não existir em metric3 ou se metric3 for omitido da expressão.

A tabela a seguir mostra um exemplo para essa sintaxe.

Métrica ou função Valores

(metric1)

[1, 1, 0, 0, -]

(metric2)

[30, -, 0, 0, 30]

(metric3)

[0, 0, 20, -, 20]

IF(metric1, metric2, metric3)

[30, 0, 20, -, -]

IF(metric1, scalar2, metric3)

para cada ponto de dados de metric1, o valor da série temporal de saída correspondente:

  • tem o valor de scalar2, se o ponto de dados correspondente de metric1 for TRUE.

  • tem o valor de metric3, se o ponto de dados correspondente de metric1 for FALSE.

  • é descartado, se o ponto de dados correspondente de metric1 for FALSE e o ponto de dados correspondente não existir em metric3, ou se metric3 for omitido da expressão.

Métrica ou função Valores

(metric1)

[1, 1, 0, 0, -]

scalar2

5

(metric3)

[0, 0, 20, -, 20]

IF(metric1, scalar2, metric3)

[5, 5, 20, -, -]

IF(metric1, metric2, scalar3)

para cada ponto de dados de metric1, o valor da série temporal de saída correspondente:

  • tem o valor de metric2, se o ponto de dados correspondente de metric1 for TRUE.

  • tem o valor de scalar3, se o ponto de dados correspondente de metric1 for FALSE.

  • tem o valor de 0, se o ponto de dados correspondente de metric1 for TRUE e o ponto de dados correspondente não existir em metric2.

  • será descartado se o ponto de dados correspondente em metric1 não existir.

Métrica ou função Valores

(metric1)

[1, 1, 0, 0, -]

(metric2)

[30, -, 0, 0, 30]

scalar3

5

IF(metric1, metric2, scalar3)

[30, 0, 5, 5, -]

IF(escalar1, métrica2, métrica3)

O valor da série de tempo de saída correspondente:

  • tem o valor de metric2, se scalar1 for TRUE.

  • tem o valor de metric3, se scalar1 for FALSE.

  • é uma série temporal vazia, se metric3 for omitido da expressão.

Exemplos de caso de uso para expressões IF

Os exemplos a seguir ilustram os possíveis usos da função IF.

  • Para exibir somente os valores baixos de uma métrica:

    IF(metric1<400, metric1)

  • Para alterar cada ponto de dados de uma métrica para um de dois valores, para mostrar valores altos e mínimos relativos da métrica original:

    IF(metric1<400, 10, 2)

  • Para exibir um 1 para cada time stamp em que a latência está acima do limite e exibir um 0 para todos os outros pontos de dados:

    IF(latency>threshold, 1, 0)

Usar matemática de métricas com a operação de API doGetMetricData

Você pode usar GetMetricData para executar cálculos usando expressões matemáticas, bem como para recuperar grandes lotes de dados de métricas em uma chamada de API. Para obter mais informações, consulte GetMetricData.