Usar a detecção de anomalias do CloudWatch
Quando você habilita a detecção de anomalias para uma métrica, o CloudWatch aplica algoritmos estatísticos e de machine learning. Esses algoritmos analisam continuamente métricas de sistemas e aplicativos, determinam linhas de base normais e apontam anomalias com intervenção mínima do usuário.
Os algoritmos geram um modelo de detecção de anomalias. O modelo gera um intervalo de valores esperados que representam o comportamento normal da métrica.
Você pode habilitar a detecção de anomalias usando o Console de gerenciamento da AWS, a AWS CLI, o CloudFormation ou o SDK da AWS. É possível habilitar a detecção de anomalias em métricas fornecidas pela AWS e também em métricas personalizadas. Em uma conta configurada como uma conta de monitoramento para a observabilidade entre contas do CloudWatch, você pode criar detectores de anomalias em métricas em contas de origem, além de métricas na conta de monitoramento.
Você pode usar o modelo de valores esperados de duas formas:
Crie alarmes de detecção de anomalias com base no valor esperado de uma métrica. Esses tipos de alarmes não têm um limite estático para determinar o estado do alarme. Em vez disso, eles comparam o valor da métrica ao valor esperado com base no modelo de detecção de anomalias.
É possível escolher se o alarme deverá ser acionado quando o valor da métrica estiver acima da faixa de valores esperados, abaixo da faixa ou acima ou ambos.
Para obter mais informações, consulte Criar um alarme do CloudWatch com base na detecção de anomalias.
Ao visualizar um gráfico de dados de métricas, sobreponha os valores esperados no gráfico como uma faixa. Isso faz com que fique visualmente claro quais valores no gráfico estão fora do intervalo normal. Para obter mais informações, consulte Criar um gráfico.
Você também pode recuperar os valores superior e inferior do segmento do modelo usando a solicitação de API
GetMetricDatacom a função matemática de métricaANOMALY_DETECTION_BAND. Para obter mais informações, consulte GetMetricData.
Em um gráfico com detecção de anomalias, o intervalo esperado de valores é mostrado como uma faixa cinza. Se o valor real da métrica for além dessa faixa, ela será mostrada como vermelha durante esse período.
Os algoritmos de detecção de anomalias consideram a sazonalidade e as mudanças de tendência das métricas. As mudanças de sazonalidade podem ser por hora, dia ou semana, conforme mostrado nos exemplos a seguir.
As tendências de maior alcance podem ser para baixo ou para cima.
A detecção de anomalias também funciona bem com métricas com padrões simples.
Como funciona a detecção de anomalias do CloudWatch
Quando você habilita a detecção de anomalias para uma métrica, o CloudWatch aplica algoritmos de machine learning aos dados anteriores da métrica para criar um modelo dos valores esperados da métrica. O modelo avalia as tendências e padrões por hora, dia e semana da métrica. O algoritmo é treinado em até duas semanas de dados de métrica, mas é possível habilitar a detecção de anomalias em uma métrica mesmo que ela não tenha um total de duas semanas de dados.
Especifique um valor para o limite de detecção de anomalias que o CloudWatch usa junto com o modelo para determinar o intervalo “normal” de valores da métrica. Um valor mais alto para o limite de detecção de anomalias produz uma faixa mais larga de valores "normais".
O modelo de machine learning é específico para uma métrica e uma estatística. Por exemplo, se você habilitar a detecção de anomalias para uma métrica usando a estatística AVG, o modelo será específico à estatística AVG.
Ao criar um modelo para muitas métricas comuns de produtos da AWS, o CloudWatch garante que a banda não excederá os valores lógicos. Por exemplo, a faixa para MemoryUtilization de uma instância do EC2 permanecerá entre 0 e 100, e as faixas que acompanham as Requests do CloudFront, que não podem ser negativas, nunca ficarão abaixo de zero.
Depois de criar um modelo, a detecção de anomalias do CloudWatch avaliará continuamente o modelo e fará ajustes para garantir que ele seja o mais preciso possível. Isso inclui treinar novamente o modelo para fazer ajustes, caso os valores de métricas evoluam ao longo do tempo ou apresentem mudanças repentinas, além de incluir preditores para melhorar os modelos de métricas sazonais, variáveis ou esparsas.
Depois que habilitar a detecção de anomalias em uma métrica, você poderá excluir prazos específicos da métrica para que não sejam usados para treinar o modelo. Dessa forma, você pode excluir as implantações ou outros eventos incomuns para que não sejam usados para treinamento do modelo, garantindo a criação de um modelo mais preciso.
O uso de modelos de detecção de anomalias para alarmes gera cobranças na sua conta da AWS. Para obter mais informações, consulte Preços do Amazon CloudWatch
Detecção de anomalias em matemática de métrica
A detecção de anomalias em matemática métrica é um recurso que pode ser usado para criar alarmes de detecção de anomalias na saída de expressões matemáticas métricas. É possível usar essas expressões para criar gráficos de visualização de bandas de detecção de anomalias. O recurso suporta funções aritméticas básicas, comparações e operadores lógicos e a maioria das outras funções. Para obter informações sobre funções que não são suportadas, consulteUsar matemática métricasnoGuia do usuário do Amazon CloudWatch.
Você pode criar modelos de detecção de anomalias com base em expressões matemáticas métricas semelhantes a forma que você já cria modelos de detecção de anomalias. No console do CloudWatch, você pode aplicar a detecção de anomalias a expressões matemáticas métricas e selecionar a detecção de anomalias como um tipo de limite para essas expressões.
nota
A detecção de anomalias em matemática métrica só pode ser ativada e editada na versão mais recente da interface do usuário de métricas. Quando você cria detectores de anomalias com base em expressões matemáticas de métrica na nova versão da interface, pode visualizá-los na versão antiga, mas não os editar.
Para obter informações sobre como criar, editar e excluir alarmes e modelos para detecção de anomalias e matemática métrica, consulte as seguintes seções:
Você também pode criar, excluir e descobrir modelos de detecção de anomalias com base em expressões matemáticas de métrica usando a API do CloudWatch com PutAnomalyDetector, DeleteAnomalyDetector eDescribeAnomalyDetectors. Para obter informações sobre essas ações de API, consulte as seções a seguir emReferência de API do Amazon CloudWatch.
Para obter informações sobre como os alarmes de detecção de anomalias são precificados, consulte Definição de preço do Amazon CloudWatch
Detecção de anomalias usando o PromQL
Você pode criar faixas de detecção de anomalias para qualquer métrica compatível com o Prometheus usando funções padrão do PromQL, como quantile_over_time, stddev_over_time e avg_over_time. Essa abordagem calcula uma linha de base e adiciona ou subtrai um desvio padrão em escala para definir limites superiores e inferiores que se adaptam aos padrões naturais da métrica.
Isso funciona para qualquer métrica que retorne um valor flutuante, como uso da CPU, latência de solicitações ou contagens de erros. Para obter informações sobre como ingerir métricas usando o OpenTelemetry, consulte OpenTelemetry.
Definição de limites superiores e inferiores
Para definir um intervalo esperado para uma métrica, calcule uma linha de base usando a mediana ou a média em uma janela de tempo e, em seguida, adicione e subtraia um múltiplo do desvio padrão. O multiplicador controla a sensibilidade. Valores mais altos geram faixas mais largas com menos falsos positivos, enquanto valores mais baixos detectam desvios menores.
O exemplo a seguir cria um limite superior para uma métrica de solicitação de anúncio usando uma janela de 60 minutos e um multiplicador de 3:
quantile_over_time(0.5, {"app.ads.ad_requests"}[60m] offset 1m) + 3 * stddev_over_time({"app.ads.ad_requests"}[60m] offset 1m)
O exemplo a seguir cria o limite inferior correspondente. A função clamp_min evita que o limite inferior seja negativo para métricas que não podem ter valores negativos:
clamp_min( quantile_over_time(0.5, {"app.ads.ad_requests"}[60m] offset 1m) - 3 * stddev_over_time({"app.ads.ad_requests"}[60m] offset 1m), 0)
Você pode representar em grafos os dois limites juntos no CloudWatch Query Studio para visualizar o intervalo esperado para sua métrica. Para obter mais informações, consulte Execução de consultas do PromQL no Query Studio (versão de pré-visualização).
Detecção de violações
Para detectar quando uma métrica está fora do intervalo esperado, combine os dois limites em uma única consulta. A seguinte expressão retorna somente os pontos de dados em que o valor da métrica excede o limite superior ou fica abaixo do limite inferior:
1 * {"app.ads.ad_requests"} > quantile_over_time(0.5, {"app.ads.ad_requests"}[60m] offset 1m) + 3 * stddev_over_time({"app.ads.ad_requests"}[60m] offset 1m) or 1 * {"app.ads.ad_requests"} < clamp_min( quantile_over_time(0.5, {"app.ads.ad_requests"}[60m] offset 1m) - 3 * stddev_over_time({"app.ads.ad_requests"}[60m] offset 1m), 0)
Essa consulta funciona em vários valores de rótulos, para que você possa detectar anomalias em toda a sua frota em uma única consulta. Você pode usar essa expressão para criar um alarme do PromQL que é acionado quando qualquer série temporal viola o intervalo esperado. Para obter mais informações, consulte Criação de um alarme do CloudWatch usando o PromQL para detecção de anomalias.