

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á.

# Escala preditiva para o Amazon EC2 Auto Scaling
<a name="ec2-auto-scaling-predictive-scaling"></a>

A escala preditiva funciona por meio da análise de dados históricos de carga para detectar padrões diários ou semanais nos fluxos de tráfego. Ele usa essas informações para prever as necessidades futuras de capacidade, de modo que o Amazon EC2 Auto Scaling possa aumentar proativamente a capacidade do seu grupo do Auto Scaling para combinar com a carga prevista.

A escalabilidade preditiva é adequada para situações em que há:
+ Tráfego cíclico, como alta utilização de recursos durante o horário comercial e baixa utilização de recursos durante a noite e nos fins de semana
+ Padrões on-and-off de carga de trabalho recorrentes, como processamento em lote, testes ou análise periódica de dados
+ Aplicações que demoram muito para inicializar, causando um impacto de latência considerável na performance da aplicação durante eventos de aumento da escala na horizontal

Em geral, se houver padrões regulares de aumento de tráfego e aplicações que demoram muito para inicializar, considere o uso da escalabilidade preditiva. A escalabilidade preditiva pode ajudar você a expandir mais rapidamente, lançando a capacidade antes da carga prevista, em comparação com o uso apenas da escalabilidade dinâmica, que é reativa por natureza. A escalabilidade preditiva também pode economizar dinheiro em sua fatura do EC2 ao ajudar você a evitar a necessidade de provisionar a capacidade de forma excessiva.

Por exemplo, considere uma aplicação com elevado índice de utilização durante o horário comercial e baixo uso durante a noite. No início de cada dia útil, a escalabilidade preditiva pode adicionar capacidade antes do primeiro fluxo de tráfego. Isso ajuda sua aplicação a manter alta disponibilidade e performance ao passar de um período de menor utilização para um período de maior utilização. Você não precisa esperar que a escalabilidade dinâmica reaja à mudança de tráfego. Você também não precisa gastar tempo revisando os padrões de carga da aplicação e tentando alocar a quantidade certa de capacidade usando a escalabilidade programada. 

**Topics**
+ [Como a escalabilidade preditiva funciona](predictive-scaling-policy-overview.md)
+ [Criar uma política de escalabilidade preditiva ()](predictive-scaling-create-policy.md)
+ [Avaliar as políticas de escalabilidade preditiva](predictive-scaling-graphs.md)
+ [Substituir a previsão](predictive-scaling-overriding-forecast-capacity.md)
+ [Usar métricas personalizadas](predictive-scaling-customized-metric-specification.md)

# Como a escalabilidade preditiva funciona
<a name="predictive-scaling-policy-overview"></a>

Este tópico explica como funciona a escala preditiva e descreve o que deve ser considerado quando você cria uma política de escala preditiva.

**Topics**
+ [Como funciona](#how-predictive-scaling-works)
+ [Limites máximos de capacidade](#predictive-scaling-maximum-capacity-limit)
+ [Considerações](#predictive-scaling-considerations)
+ [Regiões aceitas](#predictive-scaling-regions)

## Como funciona
<a name="how-predictive-scaling-works"></a>

Para usar a escala preditiva, crie uma política de escalabilidade preditiva que especifique a CloudWatch métrica a ser monitorada e analisada. Para que a escala preditiva comece a prever valores futuros, essa métrica deve ter pelo menos 24 horas de dados.

Depois que você cria a política, a escala preditiva começa a analisar os dados de métricas dos últimos 14 dias para identificar padrões. Ele usa essa análise para gerar uma previsão horária dos requisitos de capacidade para as próximas 48 horas. A previsão é atualizada a cada 6 horas usando os CloudWatch dados mais recentes. À medida que novos dados chegam, a escala preditiva é capaz de melhorar continuamente a precisão das previsões futuras.

Quando você ativa a escala preditiva pela primeira vez, ela é executada no modo *somente de previsão*. Nesse modo, ele gera previsões de capacidade, mas não escala de fato seu grupo do Auto Scaling com base nessas previsões. Isso permite que você avalie a exatidão e a adequação da previsão. Você pode visualizar os dados de previsão usando a operação da API `GetPredictiveScalingForecast` ou o Console de gerenciamento da AWS.

Depois de revisar os dados de previsão e decidir iniciar a escala com base nesses dados, alterne a política de escala para o modo de *previsão e escala*. Neste modo:
+ Se a previsão for de um aumento na carga, o Amazon EC2 Auto Scaling aumentará a capacidade por meio do aumento a escala horizontalmente.
+ Se a previsão esperar uma redução na carga, ela não será reduzida a escala horizontalmente para remover a capacidade. Se quiser remover a capacidade que não é mais necessária, será necessário criar políticas de escala dinâmica.

Por padrão, o Amazon EC2 Auto Scaling escala seu grupo do Auto Scaling no início de cada hora com base na previsão para essa hora. Opcionalmente, você pode especificar uma hora de início anterior usando a propriedade `SchedulingBufferTime` na operação da API `PutScalingPolicy` ou a configuração de **instâncias de pré-execução** no Console de gerenciamento da AWS. Isso faz com que o Amazon EC2 Auto Scaling execute novas instâncias antes da demanda prevista, dando-lhes tempo para inicializar e se preparar para lidar com o tráfego. 

Para dar suporte à execução de novas instâncias antes da demanda prevista, recomendamos enfaticamente que você ative o *aquecimento de instância padrão* para o seu grupo do Auto Scaling. Especifica um período de tempo após uma atividade de aumento a escala horizontalmente durante o qual o Amazon EC2 Auto Scaling não reduzirá a escala, mesmo que as políticas de escala dinâmica indiquem que a capacidade deve ser reduzida. Isso ajuda você a garantir que as instâncias recém-executadas tenham tempo suficiente para começar a atender ao aumento do tráfego antes de serem consideradas para operações de redução da escala horizontalmente. Para obter mais informações, consulte [Definir o aquecimento padrão da instância para um grupo do Auto Scaling](ec2-auto-scaling-default-instance-warmup.md).

## Limites máximos de capacidade
<a name="predictive-scaling-maximum-capacity-limit"></a>

Os grupos do Auto Scaling têm uma configuração de capacidade máxima que limita o número máximo de instâncias do EC2 que podem ser executadas para o grupo. Quando as políticas de escalabilidade estão definidas, um grupo não pode aumentar sua capacidade desejada acima do limite da capacidade máxima.

Como alternativa, você pode permitir que a capacidade máxima do grupo seja aumentada automaticamente se a capacidade prevista se aproximar ou exceder a capacidade máxima do grupo do Auto Scaling. Para ativar esse comportamento, use as propriedades `MaxCapacityBreachBehavior` e `MaxCapacityBuffer` na operação da API `PutScalingPolicy` ou a configuração de **comportamento de capacidade máxima** no Console de gerenciamento da AWS. 

**Atenção**  
Tenha cuidado ao permitir que a capacidade máxima seja aumentada automaticamente. Isso pode fazer com que mais instâncias sejam executadas do que o pretendido se a capacidade máxima aumentada não for monitorada e gerenciada. A capacidade máxima aumentada passa a ser a nova capacidade máxima normal do grupo do Auto Scaling até que você a atualize manualmente. A capacidade máxima não diminui automaticamente de volta ao máximo original.

## Considerações
<a name="predictive-scaling-considerations"></a>
+ Confirme se a escalabilidade preditiva é adequada para sua workload. Uma workload será uma boa opção para o uso da escalabilidade preditiva se ela apresentar padrões de carga recorrentes específicos do dia da semana ou da hora do dia. Para verificar isso, configure políticas de escalabilidade preditiva no modo *somente previsão* e consulte as recomendações do console. O Amazon EC2 Auto Scaling fornece recomendações com base em observações sobre a performance potencial da política. Avalie a previsão e as recomendações antes de permitir que a escalabilidade preditiva escale ativamente sua aplicação.
+ A escalabilidade preditiva precisa de pelo menos 24 horas de dados históricos para começar a previsão. No entanto, as previsões serão mais eficazes se os dados históricos abrangerem duas semanas completas. Se você atualizar sua aplicação criando um novo do grupo do Auto Scaling e excluindo o antigo, o novo grupo do Auto Scaling precisará de 24 horas de dados históricos de carga antes que a escalabilidade preditiva possa começar a gerar previsões novamente. É possível usar métricas personalizadas para agregar métricas em grupos do Auto Scaling novos e antigos. Senão, talvez seja necessário esperar alguns dias para obter uma previsão mais precisa. 
+ Escolha uma métrica de carga que represente com precisão a carga total da sua aplicação e que seja o aspecto mais importante a ser escalado.
+ Usá-la com a escalabilidade preditiva ajuda você a seguir de perto a curva de demanda para a aplicação, reduzindo a escala na horizontal durante períodos de baixo tráfego e aumentando-a quando o tráfego é maior do que o esperado. Quando várias políticas de escalabilidade estão ativas, cada política determina a capacidade desejada de forma independente e a capacidade desejada é definida como a capacidade máxima entre essas. Por exemplo, se 10 instâncias forem necessárias para permanecer na utilização-alvo em uma política de escalabilidade com monitoramento do objetivo e 8 instâncias forem necessárias para permanecer na utilização-alvo em uma política de dimensionamento preditiva, a capacidade desejada do grupo será definida como 10. Também recomendamos usar políticas de ajuste de escala de rastreamento de metas em seu ajuste de escala dinâmico. Para obter mais informações, consulte [Escalabilidade dinâmica para o Amazon EC2 Auto Scaling](as-scale-based-on-demand.md).
+ Um pressuposto básico da escalabilidade preditivo é que o grupo do Auto Scaling é homogêneo e todas as instâncias têm capacidade igual. Se isso não for verdade para seu grupo, a capacidade prevista pode ser imprecisa. Portanto, tenha cuidado ao criar políticas de escalabilidade preditiva para [grupos de instâncias mistas](ec2-auto-scaling-mixed-instances-groups.md), já que diferentes tipos de instâncias podem ser provisionados com capacidades diferentes. Veja a seguir alguns exemplos para os quais a capacidade prevista será imprecisa:
  + Sua política de escalabilidade preditiva é baseada na utilização da CPU, mas o número de v CPUs em cada instância do Auto Scaling varia entre os tipos de instância.
  + Sua política de escalabilidade preditiva é baseada na entrada ou na saída da rede, mas throughput de largura de banda da rede para cada instância do Auto Scaling varia entre os tipos de instância. Por exemplo, os tipos de instância M5 e M5n são semelhantes, mas o tipo de instância M5n oferece throughput de rede significativamente maior.

## Regiões aceitas
<a name="predictive-scaling-regions"></a>
+ Leste dos EUA (Norte da Virgínia)
+ Leste dos EUA (Ohio)
+ Oeste dos EUA (N. da Califórnia)
+ Oeste dos EUA (Oregon)
+ África (Cidade do Cabo)
+ Ásia-Pacífico (Hong Kong)
+ Ásia-Pacífico (Hyderabad)
+ Ásia-Pacífico (Jacarta)
+ Ásia-Pacífico (Melbourne)
+ Ásia-Pacífico (Mumbai)
+ Ásia-Pacífico (Osaka)
+ Ásia-Pacífico (Seul)
+ Ásia-Pacífico (Singapura)
+ Ásia-Pacífico (Sydney)
+ Ásia-Pacífico (Tóquio)
+ Canadá (Central)
+ Oeste do Canadá (Calgary)
+ China (Pequim)
+ China (Ningxia)
+ Europa (Frankfurt)
+ Europa (Irlanda)
+ Europa (Londres)
+ Europa (Milão)
+ Europe (Paris)
+ Europa (Espanha)
+ Europa (Estocolmo)
+ Europa (Zurique)
+ Israel (Tel Aviv)
+ Oriente Médio (Barém)
+ Oriente Médio (Emirados Árabes Unidos)
+ América do Sul (São Paulo)
+ AWS GovCloud (Leste dos EUA)
+ AWS GovCloud (Oeste dos EUA)

# Desabilitar uma política de escalabilidade para um grupo do Auto Scaling
<a name="predictive-scaling-create-policy"></a>

Os procedimentos a seguir ajudam você a criar uma política de escalabilidade preditiva usando o Console de gerenciamento da AWS ou. AWS CLI

Se o grupo do Auto Scaling for novo, ele deverá fornecer pelo menos 24 horas de dados antes que o Amazon EC2 Auto Scaling possa gerar uma previsão para ele. 

**Topics**
+ [Criar uma política de escalabilidade preditiva (console)](#predictive-scaling-policy-console)
+ [Criar uma política de escalabilidade preditiva (AWS CLI)](#predictive-scaling-policy-aws-cli)

## Criar uma política de escalabilidade preditiva (console)
<a name="predictive-scaling-policy-console"></a>

*Se esta for a primeira vez que cria uma política de escala preditiva, recomendamos usar o console para criar várias políticas de escala preditiva no modo somente de previsão*. Isso testa os efeitos potenciais de diferentes métricas e valores de destino. Você pode criar várias políticas de escalabilidade preditiva para cada grupo do Auto Scaling, mas somente uma das políticas pode ser usada para a escalabilidade ativa.

### Criar uma política de escalação preditiva no console (métricas predefinidas)
<a name="create-a-predictive-scaling-policy-in-the-console"></a>

Siga o procedimento a seguir para criar uma política de escalação preditiva usando métricas predefinidas (CPU, E/S da rede ou contagem de solicitações do Application Load Balancer por destino). A maneira mais fácil de criar uma política de escalação preditiva é usar métricas predefinidas. Se você preferir usar métricas personalizadas, consulte [Criar uma política de escalação preditiva no console (métricas personalizadas)](#create-a-predictive-scaling-policy-in-the-console-custom-metrics).

**Para criar uma política de escalabilidade preditiva**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)e escolha **Auto Scaling Groups** no painel de navegação.

1. Marque a caixa de seleção ao lado do seu grupo do Auto Scaling.

   Um painel dividido é aberto na parte inferior da página. 

1. Na guia **Automatic scaling** (Escalabilidade automática), em **Scaling policies** (Políticas de escalabilidade), escolha **Create predictive scaling policy** (Criar política de escalabilidade preditiva).

1. Insira um nome para a política.

1. Ativar a opção **Scale based on forecast** (Escala baseada em previsão) para conceder ao Amazon EC2 Auto Scaling permissão para começar a escalar imediatamente.

   Para manter a política no modo *somente previsão*, deixe a opção **Scale based on forecast**(Escala baseada em previsão) desativada. 

1. Em **Metrics** (Métricas), escolha suas métricas na lista de opções. As opções incluem **CPU**, **Network In** (Entrada de rede), **Network Out** (Saída de rede), **Application Load Balancer request count** (Número de solicitações do Application Load Balancer) e **Custom metric pair** (Par de métricas personalizadas).

   Se tiver escolhido **Application Load Balancer request count per target** (Número de solicitações do Application Load Balancer por destino), escolha um grupo de destino em **Target group** (Grupo de destino). A opção **Application Load Balancer request count per target** (Número de solicitações do Application Load Balancer por destino) só será válida de você tiver anexado um grupo de destino do Application Load Balancer ao seu grupo do Auto Scaling. 

   Se você escolheu **Custom metric pair** (Par de métricas personalizadas), escolha métricas individuais nas listas suspensas para **Load metric** (Métrica de carga) e **Scaling metric** (Métrica de escalabilidade). 

1. Em **Target utilization** (Utilização-alvo), insira o valor-alvo que o Amazon EC2 Auto Scaling deveria manter. O Amazon EC2 Auto Scaling aumentará a escala na horizontal até que a utilização média seja igual à utilização-alvo ou até atingir o número máximo de instâncias especificado.     
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/autoscaling/ec2/userguide/predictive-scaling-create-policy.html)

1. (Opcional) Em **Pre-launch instances** (Iniciar instâncias previamente), escolha com que antecedência você deseja que suas instâncias sejam iniciadas antes que a previsão solicite o aumento de carga. 

1. (Opcional) Em **Max capacity behavior** (Comportamento na capacidade máxima), escolha se será permitido que o Amazon EC2 Auto Scaling aumente a escala horizontalmente além da capacidade máxima do grupo quando a capacidade prevista exceder o máximo definido. A ativação dessa configuração permite aumentar a escala horizontalmente nos períodos em que estão previstos picos de tráfego.

1. (Opcional) Em **Buffer maximum capacity above the forecasted capacity** (Capacidade máxima do buffer acima da capacidade prevista), escolha a quantidade de capacidade adicional a ser usada quando a capacidade prevista estiver próxima de ou exceder a capacidade máxima. O valor é especificado como um percentual em relação à capacidade de prevista. Por exemplo, se o buffer é 10, isso significa um buffer de 10%. Portanto, se a capacidade prevista for 50 e a capacidade máxima for 40, a capacidade máxima real será 55. 

   Se esse valor for definido como 0, o Amazon EC2 Auto Scaling poderá escalar a capacidade acima da capacidade máxima para igualar, mas não exceder, a capacidade prevista.

1. Selecione **Create predictive scaling policy** (Criar política de escalabilidade preditiva).

### Criar uma política de escalação preditiva no console (métricas personalizadas)
<a name="create-a-predictive-scaling-policy-in-the-console-custom-metrics"></a>

Use o procedimento a seguir para criar uma política de escalação preditiva usando métricas personalizadas. As métricas personalizadas podem incluir outras métricas fornecidas por CloudWatch ou nas quais você publica CloudWatch. Para usar a contagem de solicitações de CPU, E/S de rede ou Application Load Balancer por destino, consulte [Criar uma política de escalação preditiva no console (métricas predefinidas)](#create-a-predictive-scaling-policy-in-the-console).

Para criar uma política de escalação preditiva usando métricas personalizadas, é necessário fazer o seguinte:
+ Você deve fornecer as consultas brutas que permitem que o Amazon EC2 Auto Scaling interaja com as métricas inseridas. CloudWatch Para obter mais informações, consulte [Configurações avançadas de política de escalabilidade preditiva usando métricas personalizadas](predictive-scaling-customized-metric-specification.md). Para ter certeza de que o Amazon EC2 Auto Scaling pode extrair os CloudWatch dados métricos, confirme se cada consulta está retornando pontos de dados. Confirme isso usando o CloudWatch console ou a operação CloudWatch [GetMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html)da API. 
**nota**  
Fornecemos exemplos de cargas úteis JSON no editor de JSON no console do Amazon EC2 Auto Scaling. Esses exemplos fornecem uma referência para os pares de valores-chave necessários para adicionar outras CloudWatch métricas fornecidas por AWS ou nas quais você publicou anteriormente. CloudWatch Você pode usá-las como ponto de partida e depois personalizá-las de acordo com as suas necessidades.
+ Se você usar qualquer matemática de métricas, deverá estruturar manualmente o JSON para adequá-lo ao seu cenário específico. Para obter mais informações, consulte [Usar expressões de matemática métrica](using-math-expression-examples.md). Antes de usar matemática de métricas em sua política, confirme se as consultas de métricas baseadas em expressões matemáticas de métricas são válidas e retornam uma única série temporal. Confirme isso usando o CloudWatch console ou a operação CloudWatch [GetMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html)da API.

Se você cometer um erro em uma consulta fornecendo dados incorretos, como o nome errado do grupo do Auto Scaling, a previsão não terá nenhum dado. Para solucionar problemas de métricas personalizadas, consulte [Criar uma política de escalação preditiva no console (métricas personalizadas)](custom-metrics-troubleshooting.md).

**Para criar uma política de escalabilidade preditiva**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)e escolha **Auto Scaling Groups** no painel de navegação.

1. Marque a caixa de seleção ao lado do seu grupo do Auto Scaling.

   Um painel dividido é aberto na parte inferior da página. 

1. Na guia **Automatic scaling** (Escalabilidade automática), em **Scaling policies** (Políticas de escalabilidade), escolha **Create predictive scaling policy** (Criar política de escalabilidade preditiva).

1. Insira um nome para a política.

1. Ativar a opção **Scale based on forecast** (Escala baseada em previsão) para conceder ao Amazon EC2 Auto Scaling permissão para começar a escalar imediatamente.

   Para manter a política no modo *somente previsão*, deixe a opção **Scale based on forecast**(Escala baseada em previsão) desativada. 

1. Em **Metrics** (Métricas), escolha **Custom metric pair** (Par de métricas personalizado).

   1. Em **Métrica de carga**, escolha ** CloudWatch Métrica personalizada** para usar uma métrica personalizada. Estruture a carga útil JSON que contém a definição da métrica de carga para a política e cole-a na caixa do editor de Jason, substituindo o que já está na caixa.

   1. Em **Métrica de escala**, escolha ** CloudWatch Métrica personalizada** para usar uma métrica personalizada. Estruture a carga útil JSON que contém a definição da métrica de escalação para a política e cole-a na caixa do editor de Jason, substituindo o que já está na caixa. 

   1. (Opcional) Para adicionar uma métrica de capacidade personalizada, marque a caixa de seleção **Add custom capacity metric** (Adicionar métrica de capacidade personalizada). Estruture a carga útil JSON que contém a definição da métrica de capacidade para a política e cole-a na caixa do editor de Jason, substituindo o que já está na caixa.

      Você só precisa habilitar essa opção para criar uma nova série temporal de capacidade se seus dados métricos de capacidade abrangerem vários grupos do Auto Scaling. Nesse caso, é necessário usar a matemática de métricas para agregar os dados em uma única série temporal.

1. Em **Target utilization** (Utilização-alvo), insira o valor-alvo que o Amazon EC2 Auto Scaling deveria manter. O Amazon EC2 Auto Scaling aumentará a escala na horizontal até que a utilização média seja igual à utilização-alvo ou até atingir o número máximo de instâncias especificado. 

1. (Opcional) Em **Pre-launch instances** (Iniciar instâncias previamente), escolha com que antecedência você deseja que suas instâncias sejam iniciadas antes que a previsão solicite o aumento de carga. 

1. (Opcional) Em **Max capacity behavior** (Comportamento na capacidade máxima), escolha se será permitido que o Amazon EC2 Auto Scaling aumente a escala horizontalmente além da capacidade máxima do grupo quando a capacidade prevista exceder o máximo definido. A ativação dessa configuração permite aumentar a escala horizontalmente nos períodos em que estão previstos picos de tráfego.

1. (Opcional) Em **Buffer maximum capacity above the forecasted capacity** (Capacidade máxima do buffer acima da capacidade prevista), escolha a quantidade de capacidade adicional a ser usada quando a capacidade prevista estiver próxima de ou exceder a capacidade máxima. O valor é especificado como um percentual em relação à capacidade de prevista. Por exemplo, se o buffer é 10, isso significa um buffer de 10%. Portanto, se a capacidade prevista for 50 e a capacidade máxima for 40, a capacidade máxima real será 55. 

   Se esse valor for definido como 0, o Amazon EC2 Auto Scaling poderá escalar a capacidade acima da capacidade máxima para igualar, mas não exceder, a capacidade prevista.

1. Selecione **Create predictive scaling policy** (Criar política de escalabilidade preditiva).

## Criar uma política de escalabilidade preditiva (AWS CLI)
<a name="predictive-scaling-policy-aws-cli"></a>

Use o AWS CLI seguinte para configurar políticas de escalabilidade preditiva para seu grupo de Auto Scaling. Substitua cada *user input placeholder* por suas próprias informações.

Para obter mais informações sobre as CloudWatch métricas que você pode especificar, consulte [PredictiveScalingMetricSpecification](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_PredictiveScalingMetricSpecification.html)a Referência da API do *Amazon EC2 Auto Scaling*.

### Exemplo 1: Uma política de escalabilidade preditiva que cria previsões, mas não implementa a escalabilidade
<a name="predictive-scaling-configuration-ex1"></a>

O exemplo a seguir mostra uma configuração de política completa que usa métricas de utilização da CPU para escalabilidade preditiva com uma utilização-alvo de `40`. O modo `ForecastOnly` é usado por padrão, a menos que você especifique explicitamente qual modo usar. Salve esta configuração em um arquivo chamado `config.json`.

```
{
    "MetricSpecifications": [
        {
            "TargetValue": 40,
            "PredefinedMetricPairSpecification": {
                "PredefinedMetricType": "ASGCPUUtilization"
            }
        }
    ]
}
```

Para criar a política na linha de comando, execute o [put-scaling-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-scaling-policy.html)comando com o arquivo de configuração especificado, conforme demonstrado no exemplo a seguir.

```
aws autoscaling put-scaling-policy --policy-name cpu40-predictive-scaling-policy \
  --auto-scaling-group-name my-asg --policy-type PredictiveScaling \
  --predictive-scaling-configuration file://config.json
```

Se bem-sucedido, esse comando gerará o nome do recurso da Amazon (ARN) da política.

```
{
  "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:2f4f5048-d8a8-4d14-b13a-d1905620f345:autoScalingGroupName/my-asg:policyName/cpu40-predictive-scaling-policy",
  "Alarms": []
}
```

### Exemplo 2: Uma política de escalabilidade preditiva que cria previsões e implementa a escalabilidade
<a name="predictive-scaling-configuration-ex2"></a>

Para uma política que permite que o Amazon EC2 Auto Scaling preveja e implemente a escalabilidade, adicione a propriedade `Mode` com um valor `ForecastAndScale`. O exemplo a seguir mostra uma configuração de política que usa métricas de número de solicitações do Application Load Balancer. A utilização-alvo é `1000` e a escalabilidade preditiva é definida no modo `ForecastAndScale`.

```
{
    "MetricSpecifications": [
        {
            "TargetValue": 1000,
            "PredefinedMetricPairSpecification": {
                "PredefinedMetricType": "ALBRequestCount",
                "ResourceLabel": "app/my-alb/778d41231b141a0f/targetgroup/my-alb-target-group/943f017f100becff"
            }
        }
    ],
    "Mode": "ForecastAndScale"
}
```

Para criar essa política, execute o [put-scaling-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-scaling-policy.html)comando com o arquivo de configuração especificado, conforme demonstrado no exemplo a seguir.

```
aws autoscaling put-scaling-policy --policy-name alb1000-predictive-scaling-policy \
  --auto-scaling-group-name my-asg --policy-type PredictiveScaling \
  --predictive-scaling-configuration file://config.json
```

Se bem-sucedido, esse comando gerará o nome do recurso da Amazon (ARN) da política.

```
{
  "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:19556d63-7914-4997-8c81-d27ca5241386:autoScalingGroupName/my-asg:policyName/alb1000-predictive-scaling-policy",
  "Alarms": []
}
```

### Exemplo 3: Uma política de escalabilidade preditiva que pode escalar acima da capacidade máxima
<a name="predictive-scaling-configuration-ex3"></a>

O exemplo a seguir mostra como criar uma política que poderá escalar além do limite máximo de tamanho do grupo quando você precisar que ele lide com uma carga maior do que o normal. Por padrão, o Amazon EC2 Auto Scaling não aumenta a capacidade do EC2 além da capacidade máxima definida. No entanto, pode ser útil deixá-lo ir além com um pouco mais de capacidade para evitar problemas de performance ou disponibilidade.

Para fornecer espaço para o Amazon EC2 Auto Scaling provisionar capacidade adicional quando a capacidade estiver no tamanho máximo do grupo ou muito próxima a ele, especifique as propriedades `MaxCapacityBreachBehavior` e `MaxCapacityBuffer`, conforme mostrado no exemplo a seguir. É necessário especificar `MaxCapacityBreachBehavior` com um valor de `IncreaseMaxCapacity`. O número máximo de instâncias que seu grupo pode ter depende do valor de `MaxCapacityBuffer`. 

```
{
    "MetricSpecifications": [
        {
            "TargetValue": 70,
            "PredefinedMetricPairSpecification": {
                "PredefinedMetricType": "ASGCPUUtilization"
            }
        }
    ],
    "MaxCapacityBreachBehavior": "IncreaseMaxCapacity",
    "MaxCapacityBuffer": 10
}
```

Neste exemplo, a política é configurada para usar um buffer de 10% (`"MaxCapacityBuffer": 10`). Assim, se a capacidade prevista for 50 e a capacidade máxima for 40, a capacidade máxima efetiva será 55. Uma política que pudesse escalar a capacidade acima da capacidade máxima para igualar, mas não exceder, a capacidade prevista teria um buffer de 0 (`"MaxCapacityBuffer": 0`). 

Para criar essa política, execute o [put-scaling-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-scaling-policy.html)comando com o arquivo de configuração especificado, conforme demonstrado no exemplo a seguir.

```
aws autoscaling put-scaling-policy --policy-name cpu70-predictive-scaling-policy \
  --auto-scaling-group-name my-asg --policy-type PredictiveScaling \
  --predictive-scaling-configuration file://config.json
```

Se bem-sucedido, esse comando gerará o nome do recurso da Amazon (ARN) da política.

```
{
  "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:d02ef525-8651-4314-bf14-888331ebd04f:autoScalingGroupName/my-asg:policyName/cpu70-predictive-scaling-policy",
  "Alarms": []
}
```

# Avaliar as políticas de escalabilidade preditiva
<a name="predictive-scaling-graphs"></a>

Antes de usar uma política de escalabilidade preditiva para escalar seu grupo do Auto Scaling, analise as recomendações e outros dados da política no console do Amazon EC2 Auto Scaling. Isso é importante porque você não quer que uma política de escalabilidade preditiva escale sua capacidade real até saber que suas previsões estão corretas.

Se o grupo do Auto Scaling for novo, permita que o Amazon EC2 Auto Scaling tenha 24 horas para criar a primeira previsão.

Ao criar uma previsão, o Amazon EC2 Auto Scaling usa dados históricos. Se o grupo do Auto Scaling ainda não tiver muitos dados históricos recentes, o Amazon EC2 Auto Scaling poderá preencher temporariamente a previsão com agregados criados com base nos agregados históricos disponíveis atualmente. As previsões são preenchidas até duas semanas anteriores à data de criação da política.

**Topics**
+ [Visualizar recomendações](#view-predictive-scaling-recommendations)
+ [Analisar grafos de monitoramento](#review-predictive-scaling-monitoring-graphs)
+ [Monitore métricas com CloudWatch](monitor-predictive-scaling-cloudwatch.md)

## Visualizar recomendações de escalabilidade preditiva
<a name="view-predictive-scaling-recommendations"></a>

Para realizar uma análise eficaz, o Amazon EC2 Auto Scaling deve ter pelo menos duas políticas de escalabilidade preditiva para comparação. (Porém, ainda é possível analisar as conclusões de uma única política.) Ao criar várias políticas, é possível avaliar uma política que usa uma métrica em relação a uma política que usa outra métrica. Também é possível avaliar o impacto de diferentes combinações de valores de destino e métricas. Depois que as políticas de escalabilidade preditiva são criadas, o Amazon EC2 Auto Scaling imediatamente começa a avaliar qual política faria um trabalho melhor ao escalar seu grupo.

**Para visualizar as recomendações no console do Amazon EC2 Auto Scaling**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)e escolha **Auto Scaling Groups** no painel de navegação.

1. Marque a caixa de seleção ao lado do grupo do Auto Scaling. 

   Um painel dividido é aberto na parte inferior da página.

1. Na guia **Auto Scaling**, em **Políticas de escalabilidade preditiva**, visualize detalhes sobre uma política junto com nossa recomendação. A recomendação indica se é melhor usar a política de escalabilidade preditiva ou não usá-la. 

   Se você não tiver certeza se uma política de escalabilidade preditiva é apropriada para seu grupo, analise as colunas **Impacto na disponibilidade** e **Impacto no custo** para escolher a política certa. As informações de cada coluna indicam qual é o impacto da política. 
   + **Impacto na disponibilidade**: descreve se a política evitaria um impacto negativo na disponibilidade ao provisionar instâncias suficientes para lidar com a workload, em comparação com o não uso da política.
   + **Impacto no custo**: descreve se a política evitaria um impacto negativo em seus custos ao não superprovisionar as instâncias, em comparação com o não uso da política. Com o provisionamento excessivo, suas instâncias ficam subutilizadas ou ociosas, o que só aumenta o impacto nos custos.

   Se você tiver várias políticas, uma etiqueta **Melhor previsão** será exibida ao lado do nome da política que oferece mais benefícios de disponibilidade a um custo menor. O impacto na disponibilidade tem um peso maior. 

1. (Opcional) Para selecionar o período desejado para os resultados da recomendação, escolha o valor de sua preferência no menu suspenso **Período de avaliação**: **2 dias**, **1 semana**, **2 semanas**, **4 semanas**, **6 semanas** ou **8 semanas**. Por padrão, o período de avaliação são as duas últimas semanas. Um período de avaliação mais longo oferece mais pontos de dados para os resultados da recomendação. Porém, adicionar mais pontos de dados pode não melhorar os resultados, se seus padrões de carga tiverem sido alterados, como após um período de demanda excepcional. Nesse caso, é possível obter uma recomendação mais focada analisando dados mais recentes.

**nota**  
As recomendações são geradas somente para políticas que estão no modo **Somente previsão**. O recurso de recomendações funciona melhor quando uma política está no modo **Somente previsão** durante o período de avaliação. Se você iniciar uma política no modo de **Prever e escalar** e alterná-la para o modo **Somente previsão** posteriormente, é provável que as conclusões dessa política tenham desvios. Isso ocorre porque a política já contribuiu em favor da capacidade real.

## Analisar grafos de monitoramento de escalabilidade preditiva
<a name="review-predictive-scaling-monitoring-graphs"></a>

No console do Amazon EC2 Auto Scaling, é possível analisar a previsão dos dias, semanas ou meses anteriores para visualizar a performance da política ao longo do tempo. Você também pode usar essas informações para avaliar a precisão das previsões ao decidir se permitirá que uma política escale a capacidade real.

**Para analisar grafos de monitoramento de escalabilidade preditiva no console do Amazon EC2 Auto Scaling**

1. Escolha uma política na lista **Políticas de escalabilidade preditiva**. 

1. Na seção **Monitorar**, você pode visualizar as previsões passadas e futuras de carga e de capacidade da política em relação aos valores reais. O grafo **Carga** exibe a previsão de carga e os valores reais para a métrica de carga escolhida. O grafo **Capacidade** exibe o número de instâncias previstas pela política. Também inclui o número real de instâncias iniciadas. A linha vertical separa os valores históricos das previsões futuras. Esses grafos ficam disponíveis logo após a criação da política. 

1. (Opcional) Para alterar a quantidade de dados históricos exibidos no gráfico, escolha o valor de sua preferência no menu suspenso **Período de avaliação** na parte superior da página. O período de avaliação não transforma os dados desta página de maneira alguma. Ele altera apenas a quantidade de dados históricos exibidos.

A imagem a seguir exibe os grafos **Carga** e **Capacidade** quando as previsões foram aplicadas várias vezes. A escalabilidade preditiva prevê a carga com base nos dados históricos de carga. A carga que sua aplicação gera é representada como a soma da utilização da CPU, entrada/saída da rede, solicitações recebidas ou métrica personalizada para cada instância no grupo do Auto Scaling. A escalabilidade preditiva calcula as necessidades futuras de capacidade com base na previsão de carga e na utilização desejada que você deseja alcançar para a métrica de escalabilidade.

![\[Grafos de escalabilidade preditiva\]](http://docs.aws.amazon.com/pt_br/autoscaling/ec2/userguide/images/predictive-scaling-graphs.png)


**Compare dados no grafo **Carga****  
Cada linha horizontal representa um conjunto diferente de pontos de dados relatados em intervalos de uma hora:

1. A **Carga real observada** usa a estatística SUM da métrica de carga escolhida para exibir a carga horária total passada.

1. A **Carga prevista pela política** exibe a previsão de carga horária. Essa previsão é baseada nas duas semanas anteriores de observações da carga real.

**Compare dados no grafo **Capacidade****  
Cada linha horizontal representa um conjunto diferente de pontos de dados relatados em intervalos de uma hora:

1. A **capacidade real observada** mostra a capacidade real anterior do seu grupo de Auto Scaling quando a [GroupTotalInstances](ec2-auto-scaling-metrics.md#as-group-metrics)métrica está ativada. Essa capacidade depende de suas outras políticas de escalabilidade e do tamanho mínimo do grupo durante o período selecionado.

1. A **Capacidade prevista pela política** exibe a capacidade básica que você pode esperar ter no início de cada hora quando a política estiver no modo de **Prever e escalar**.

1. A **Capacidade necessária inferida** exibe a capacidade ideal para manter a métrica de escalabilidade no valor de destino que você escolheu.

1. A **Capacidade mínima** exibe a capacidade mínima do grupo do Auto Scaling.

1. A **Capacidade máxima** exibe a capacidade máxima do grupo do Auto Scaling.

Com o objetivo de calcular a capacidade necessária inferida, começamos supondo que cada instância é igualmente utilizada em um valor de destino especificado. Na prática, as instâncias não são utilizadas igualmente. Porém, ao supor que a utilização é distribuída uniformemente entre as instâncias, podemos fazer uma estimativa da probabilidade da quantidade de capacidade necessária. Então, o requisito de capacidade é calculado de modo a ser inversamente proporcional à métrica de escalabilidade que você usou para sua política de escalabilidade preditiva. Em outras palavras, à medida que a capacidade aumenta, a métrica de escalabilidade diminui na mesma proporção. Por exemplo, se a capacidade dobra, a métrica de escalabilidade deve diminuir pela metade. 

A fórmula da capacidade necessária inferida:

 `sum of (actualCapacityUnits*scalingMetricValue)/(targetUtilization)`

Por exemplo, pegamos `actualCapacityUnits` (`10`) e `scalingMetricValue` (`30`) para determinada hora. Em seguida, pegamos a `targetUtilization` especificada em sua política de escalabilidade preditiva (`60`) e calculamos a capacidade necessária inferida para a mesma hora. Isso retorna um valor de `5`. Isso significa que cinco é a quantidade inferida de capacidade necessária para manter a capacidade em proporção inversa direta ao valor de destino da métrica de escala.

**nota**  
Há várias alavancas disponíveis para você ajustar e melhorar a economia de custos e a disponibilidade de sua aplicação.  
Utilize escalabilidade preditiva para a capacidade de linha de base e escalabilidade dinâmica para lidar com capacidade adicional. A escalabilidade dinâmica funciona independentemente da escalabilidade preditiva, aumentando e reduzindo a escala horizontalmente com base na utilização atual. Primeiro, o Amazon EC2 Auto Scaling calcula o número recomendado de instâncias para cada política de escalabilidade dinâmica. Em seguida, ele escala com base na política que fornece o maior número de instâncias.
Para permitir que a redução da escala horizontalmente ocorra quando a carga diminui, seu grupo do Auto Scaling deve sempre ter pelo menos uma política de escalabilidade dinâmica com a parte de redução da escala horizontalmente habilitada.
Você pode melhorar a performance da escalabilidade verificando se a capacidade mínima e máxima não são muito restritivas. Uma política com um número recomendado de instâncias que não esteja dentro da faixa de capacidade mínima e máxima será impedida de aumentar e reduzir a escala horizontalmente.

# Monitore métricas de escalabilidade preditiva com CloudWatch
<a name="monitor-predictive-scaling-cloudwatch"></a>

Dependendo de suas necessidades, talvez você prefira acessar dados de monitoramento para escalabilidade preditiva da Amazon CloudWatch em vez do console Amazon EC2 Auto Scaling. Após criar uma política de escalabilidade preditiva, a política coletará dados que são usados para prever sua carga e capacidade futuras. Depois que esses dados são coletados, eles são armazenados automaticamente em CloudWatch intervalos regulares. Em seguida, você pode usar CloudWatch para visualizar o desempenho da política ao longo do tempo. Você também pode criar CloudWatch alarmes para notificá-lo quando os indicadores de desempenho mudarem além dos limites definidos em CloudWatch.

**Topics**
+ [Visualizar dados históricos de previsão](#visualize-historical-forecast-data)
+ [Criar métricas de precisão usando matemática métrica](#create-accuracy-metrics)

## Visualizar dados históricos de previsão
<a name="visualize-historical-forecast-data"></a>

Você pode visualizar os dados de previsão de carga e capacidade para uma política de escalabilidade preditiva em. CloudWatch Isso pode ser útil ao visualizar previsões em relação a outras CloudWatch métricas em um único gráfico. O recurso também pode ajudar ao visualizar um intervalo mais amplo de tempo para que você possa ver tendências ao longo do tempo. É possível acessar até 15 meses de métricas históricas a fim de obter uma melhor visão do desempenho da política.

Para obter mais informações, consulte [Métricas e dimensões de escalabilidade preditiva](ec2-auto-scaling-metrics.md#predictive-scaling-metrics).

**Para visualizar dados históricos de previsão usando o CloudWatch console**

1. Abra o CloudWatch console em [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. No painel de navegação, escolha **Metrics** (Métricas) e, em seguida, **All metrics** (Todas as métricas).

1. Selecione o namespace da métrica **Auto Scaling** (Escalabilidade automática).

1. Escolha uma das seguintes opções para visualizar a previsão de carga ou as métricas de previsão de capacidade: 
   + **Previsões de carga de escalabilidade preditiva**
   + **Previsões de capacidade de escalabilidade preditiva**

1. No campo de pesquisa, insira o nome da política de escalabilidade preditiva ou o nome do grupo do Auto Scaling e pressione a tecla Enter para filtrar os resultados. 

1. Para criar um gráfico de uma métrica, marque a caixa de seleção ao lado da métrica. Para alterar o nome do gráfico, escolha o ícone de lápis. Para alterar o período, selecione um dos valores predefinidos ou escolha **custom (personalizado)**. Para obter mais informações, consulte [Representação gráfica de uma métrica](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/graph_a_metric.html) no *Guia do CloudWatch usuário da Amazon*.

1. Para alterar a estatística, escolha a guia **Métricas em gráfico**. Escolha o cabeçalho de coluna ou um valor individual e, em seguida, escolha uma estatística diferente. Embora você possa escolher qualquer estatística para cada métrica, nem todas as estatísticas são úteis para **PredictiveScalingLoadForecast**as **PredictiveScalingCapacityForecast**métricas. Por exemplo, as estatísticas **Média**, **Mínimo** e **Máximo** são úteis, mas a estatística **Soma** não.

1. Para adicionar outra métrica ao gráfico, em **Browse** (Procurar), escolha **All** (Todas), encontre a métrica específica e marque a caixa de seleção ao lado dela. Adicione até 10 métricas.

   Por exemplo, para adicionar os valores efetivos de utilização de CPU ao gráfico, escolha o namespace **EC2** e, em seguida, escolha **By Auto Scaling Group** (Por grupo do Auto Scaling). Em seguida, marque a caixa de seleção da **CPUUtilization**métrica e do grupo específico do Auto Scaling. 

1. (Opcional) Para adicionar o gráfico a um CloudWatch painel, escolha **Ações**, **Adicionar ao painel**.

## Criar métricas de precisão usando matemática métrica
<a name="create-accuracy-metrics"></a>

Com a matemática métrica, você pode consultar várias CloudWatch métricas e usar expressões matemáticas para criar novas séries temporais com base nessas métricas. Você pode visualizar as séries temporais resultantes no CloudWatch console e adicioná-las aos painéis. Para obter mais informações sobre matemática métrica, consulte [Usando matemática métrica](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html) no *Guia CloudWatch do usuário da Amazon*.

Usando matemática métrica, você pode representar graficamente de diferentes maneiras os dados que o Amazon EC2 Auto Scaling gera sobre escalabilidade preditiva. Isso ajuda a monitorar o desempenho da política ao longo do tempo e a entender se é possível melhorar sua combinação de métricas.

Por exemplo, você pode usar uma expressão de matemática métrica para monitorar o [mean absolute percentage error](https://en.wikipedia.org/wiki/Mean_absolute_percentage_error) (MAPE – Erro percentual absoluto médio). A métrica MAPE ajuda a monitorar a diferença entre os valores previstos e os valores efetivos observados durante uma determinada janela de previsão. Mudanças no valor de MAPE podem indicar se o desempenho da política está se degradando ao longo do tempo conforme a natureza da sua aplicação muda. Um aumento no MAPE sinaliza uma lacuna maior entre os valores previstos e os valores efetivos. 

**Exemplo: expressão de matemática métrica**

Para começar a usar esse tipo de gráfico, você pode criar uma expressão de matemática métrica como a mostrada no exemplo a seguir.

```
{
  "MetricDataQueries": [
    {
      "Expression": "TIME_SERIES(AVG(ABS(m1-m2)/m1))",
      "Id": "e1",
      "Period": 3600,
      "Label": "MeanAbsolutePercentageError",
      "ReturnData": true
    },
    {
      "Id": "m1",
      "Label": "ActualLoadValues",
      "MetricStat": {
        "Metric": {
          "Namespace": "AWS/EC2",
          "MetricName": "CPUUtilization",
          "Dimensions": [
            {
              "Name": "AutoScalingGroupName",
              "Value": "my-asg"
            }
          ]
        },
        "Period": 3600,
        "Stat": "Sum"
      },
      "ReturnData": false
    },
    {
      "Id": "m2",
      "Label": "ForecastedLoadValues",
      "MetricStat": {
        "Metric": {
          "Namespace": "AWS/AutoScaling",
          "MetricName": "PredictiveScalingLoadForecast",
          "Dimensions": [
            {
              "Name": "AutoScalingGroupName",
              "Value": "my-asg"
            },
            {
              "Name": "PolicyName",
              "Value": "my-predictive-scaling-policy"
            },
            {
              "Name": "PairIndex",
              "Value": "0"
            }
          ]
        },
        "Period": 3600,
        "Stat": "Average"
      },
      "ReturnData": false
    }
  ]
}
```

Em vez de uma só métrica, há uma matriz de estruturas de consulta de dados métricos para `MetricDataQueries`. Cada item em `MetricDataQueries` obtém uma métrica ou executa uma expressão matemática. O primeiro item, `e1`, é a expressão matemática. A expressão designada define o parâmetro `ReturnData` como `true`, resultando na produção de uma única série temporal. Para todas as outras métricas, o valor `ReturnData` é `false`. 

No exemplo, a expressão designada usa os valores reais e previstos como entrada e retorna a nova métrica (MAPE). `m1`é a CloudWatch métrica que contém os valores reais de carga (supondo que a utilização da CPU seja a métrica de carga originalmente especificada para a política nomeada`my-predictive-scaling-policy`). `m2`é a CloudWatch métrica que contém os valores de carga previstos. A sintaxe matemática para a métrica MAPE é a seguinte:

*média de (abs ((efetivo - previsto)/(efetivo)))*

### Visualizar suas métricas de precisão e definir alarmes
<a name="visualize-accuracy-metrics-set-alarms"></a>

Para visualizar os dados métricos de precisão, selecione a guia **Métricas** no CloudWatch console. Nele, é possível representar graficamente os dados. Para obter mais informações, consulte [Adicionar uma expressão matemática a um CloudWatch gráfico](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html#adding-metrics-expression-console) no *Guia do CloudWatch usuário da Amazon*.

Na seção **Metrics** (Métricas), você também pode criar um alarme com base em uma métrica que esteja monitorando. Enquanto estiver na guia **Graphed metrics** (Métricas representadas em gráficos), selecione o ícone **Create alarm** (Criar alarme) na coluna **Actions** (Ações). O ícone **Create alarm** (Criar alarme) é representado como um pequeno sino. Para obter mais informações e opções de notificação, consulte [Criação de um CloudWatch alarme com base em uma expressão matemática métrica](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Create-alarm-on-metric-math-expression.html) e [Notificação de usuários sobre alterações de alarme](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Notify_Users_Alarm_Changes.html) no *Guia do CloudWatch usuário da Amazon*.

Como alternativa, você pode usar [GetMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html)e [PutMetricAlarm](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutMetricAlarm.html)realizar cálculos usando matemática métrica e criar alarmes com base na saída.

# Substituir valores de previsão usando ações programadas
<a name="predictive-scaling-overriding-forecast-capacity"></a>

Às vezes, você pode ter informações adicionais sobre seus futuros requisitos de aplicações que o cálculo de previsão não pode levar em conta. Por exemplo, os cálculos de previsão podem subestimar a capacidade necessária para um evento de marketing futuro. Você pode usar ações programadas para substituir temporariamente a previsão durante períodos futuros. As ações programadas podem ser executadas de forma recorrente ou em uma data e hora específicas quando houver flutuações de demanda únicas. 

Por exemplo, você pode criar uma ação programada com uma capacidade mínima maior do que a prevista. Em runtime, o Amazon EC2 Auto Scaling atualiza a capacidade mínima do grupo do Auto Scaling. Como a escalabilidade preditiva otimiza a capacidade, uma ação agendada com uma capacidade mínima maior que os valores de previsão é honrada. Isso impede que a capacidade seja menor do que o esperado. Para interromper a substituição da previsão, use uma segunda ação programada para retornar a capacidade mínima à configuração original.

O procedimento a seguir descreve as etapas necessárias para substituir a previsão durante períodos futuros. 

**Topics**
+ [Etapa 1: (Opcional) Analisar dados de séries temporais](#analyzing-time-series-data)
+ [Etapa 2: Criar duas ações programadas](#scheduling-capacity)

**Importante**  
Este tópico pressupõe que você esteja tentando substituir a previsão para escalar para uma capacidade maior do que a prevista. Se você precisar diminuir temporariamente a capacidade sem interferência de uma política de escala preditiva, use o modo *somente de previsão*. Enquanto estiver no modo somente de previsão, a escala preditiva continuará a gerar previsões, mas não aumentará automaticamente a capacidade. Em seguida, você pode monitorar a utilização dos recursos e diminuir manualmente o tamanho do grupo, conforme necessário. Para obter mais informações sobre a escalabilidade manual, consulte [Escalabilidade manual para o Amazon EC2 Auto Scaling](ec2-auto-scaling-scaling-manually.md). 

## Etapa 1: (Opcional) Analisar dados de séries temporais
<a name="analyzing-time-series-data"></a>

Comece analisando os dados de séries temporais de previsão. Essa é uma etapa opcional, mas é útil quando você deseja entender os detalhes da previsão.

1. **Recuperar a previsão**

   Após a criação da previsão, é possível consultar um período específico na previsão. O objetivo da consulta é obter uma visão completa dos dados de séries temporais para um período específico. 

   Sua consulta pode incluir até dois dias de dados de previsão futura. Se você usa a escalabilidade preditiva há algum tempo, também pode acessar seus dados de previsão anteriores. No entanto, a duração máxima de tempo entre as horas inicial e final é de 30 dias. 

   Para obter a previsão usando o [get-predictive-scaling-forecast](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/get-predictive-scaling-forecast.html) AWS CLI comando, forneça os seguintes parâmetros no comando: 
   + Insira o nome do grupo do Auto Scaling no parâmetro `--auto-scaling-group-name`. 
   + Insira o nome da política no parâmetro `--policy-name`. 
   + Insira a hora de início no parâmetro `--start-time` para retornar apenas os dados de previsão para depois ou no horário especificado.
   + Insira a hora de término no parâmetro `--end-time` para retornar apenas os dados de previsão para antes do horário especificado. 

   ```
   aws autoscaling get-predictive-scaling-forecast --auto-scaling-group-name my-asg \
       --policy-name cpu40-predictive-scaling-policy \
       --start-time "2021-05-19T17:00:00Z" \
       --end-time "2021-05-19T23:00:00Z"
   ```

   Se bem-sucedido, o comando retornará uma resposta semelhante à seguinte. 

   ```
   {
       "LoadForecast": [
           {
               "Timestamps": [
                   "2021-05-19T17:00:00+00:00",
                   "2021-05-19T18:00:00+00:00",
                   "2021-05-19T19:00:00+00:00",
                   "2021-05-19T20:00:00+00:00",
                   "2021-05-19T21:00:00+00:00",
                   "2021-05-19T22:00:00+00:00",
                   "2021-05-19T23:00:00+00:00"
               ],
               "Values": [
                   153.0655799339254,
                   128.8288551285919,
                   107.1179447150675,
                   197.3601844551528,
                   626.4039934516954,
                   596.9441277518481,
                   677.9675713779869
               ],
               "MetricSpecification": {
                   "TargetValue": 40.0,
                   "PredefinedMetricPairSpecification": {
                       "PredefinedMetricType": "ASGCPUUtilization"
                   }
               }
           }
       ],
       "CapacityForecast": {
           "Timestamps": [
               "2021-05-19T17:00:00+00:00",
               "2021-05-19T18:00:00+00:00",
               "2021-05-19T19:00:00+00:00",
               "2021-05-19T20:00:00+00:00",
               "2021-05-19T21:00:00+00:00",
               "2021-05-19T22:00:00+00:00",
               "2021-05-19T23:00:00+00:00"
           ],
           "Values": [
               2.0,
               2.0,
               2.0,
               2.0,
               4.0,
               4.0,
               4.0
           ]
       },
       "UpdateTime": "2021-05-19T01:52:50.118000+00:00"
   }
   ```

   A resposta inclui duas previsões: `LoadForecast` e `CapacityForecast`. `LoadForecast` mostra a previsão de carga horária. `CapacityForecast` mostra os valores de previsão para a capacidade que é necessária em uma base horária para lidar com a carga prevista enquanto mantém um `TargetValue` de 40,0 (40% de utilização média da CPU).

1. **Identificar o período-alvo**

   Identifique a hora ou horas em que a flutuação de demanda única deverá ocorrer. Lembre-se de que as datas e os horários mostrados na previsão estão em UTC.

## Etapa 2: Criar duas ações programadas
<a name="scheduling-capacity"></a>

Em seguida, crie duas ações programadas para um período específico em que sua aplicação terá uma carga maior do que a prevista. Por exemplo, se você tiver um evento de marketing que irá direcionar o tráfego para seu site por um período limitado, poderá programar uma ação única para atualizar a capacidade mínima quando ele começar. Em seguida, agende outra ação para retornar a capacidade mínima para a configuração original quando o evento terminar. 

**Para criar duas ações programadas para eventos únicos (console)**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)e escolha **Auto Scaling Groups** no painel de navegação.

1. Marque a caixa de seleção ao lado do seu grupo do Auto Scaling.

   Um painel dividido é aberto na parte inferior da página. 

1. Na guia **Automatic scaling (Escalabilidade automática)**, em **Scheduled actions (Ações programadas)**, escolha **Create scheduled action (Criar ação programada)**.

1. Preencha as seguintes configurações de ações programadas:

   1. Insira um **Name** (Nome) para a ação programada.

   1. Em **Min** (Mínima) insira a nova capacidade mínima para seu grupo do Auto Scaling. A capacidade **Min** (Mínima) deve ser menor ou igual ao tamanho máximo do grupo. Se o valor de **Min** (Mínima) for maior que o tamanho máximo do grupo, será necessário atualizar o valor de **Max** (Máxima). 

   1. Em **Recurrence (Recorrência)**, escolha **Once (Uma vez)**.

   1. Em **Time zone** (Fuso horário), escolha um fuso horário. Se nenhum fuso horário for escolhido, `ETC/UTC` será usado por padrão.

   1. Defina uma **Specific start time** (Hora de início específica). 

1. Escolha **Criar**.

   O console exibe as ações programadas para o grupo do Auto Scaling. 

1. Configure uma segunda ação programada para retornar a capacidade mínima para a configuração original no final do evento. A escalabilidade preditiva pode escalar a capacidade somente quando o valor definido para **Min** (Mínima) é menor que os valores da previsão.

**Para criar duas ações programadas para eventos únicos (AWS CLI)**  
Para usar o AWS CLI para criar as ações agendadas, use o comando [put-scheduled-update-group-action](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-scheduled-update-group-action.html). 

Por exemplo, vamos definir uma programação que mantenha uma capacidade mínima de três instâncias em 19 de maio às 17h por oito horas. Os comandos a seguir mostram como implementar esse cenário.

O primeiro comando [put-scheduled-update-group-action](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-scheduled-update-group-action.html) instrui o Amazon EC2 Auto Scaling a atualizar a capacidade mínima do grupo de Auto Scaling especificado às 17h UTC de 19 de maio de 2021. 

```
aws autoscaling put-scheduled-update-group-action --scheduled-action-name my-event-start \
  --auto-scaling-group-name my-asg --start-time "2021-05-19T17:00:00Z" --minimum-capacity 3
```

O segundo comando instrui o Amazon EC2 Auto Scaling a definir a capacidade mínima do grupo como um à 1h da manhã UTC em 20 de maio de 2021. 

```
aws autoscaling put-scheduled-update-group-action --scheduled-action-name my-event-end \
  --auto-scaling-group-name my-asg --start-time "2021-05-20T01:00:00Z" --minimum-capacity 1
```

Após você adicionar essas ações programadas ao grupo do Auto Scaling, o Amazon EC2 Auto Scaling fará o seguinte: 
+ Às 17h UTC em 19 de maio de 2021, a primeira ação programada é executada. Se o grupo tiver menos de três instâncias, ele será expandido para três instâncias. Durante esse período e nas próximas oito horas, o Amazon EC2 Auto Scaling poderá continuar a aumentar a escala na horizontal se a capacidade prevista for maior do que a capacidade real ou se houver uma política de escalabilidade dinâmica em vigor. 
+ À 1h da manhã UTC em 20 de maio de 2021, a segunda ação programada é executada. Isso retorna a capacidade mínima para sua configuração original no final do evento.

### Escalabilidade com base em programações recorrentes
<a name="scheduling-recurring-actions"></a>

Para substituir a previsão para o mesmo período de tempo todas as semanas, crie duas ações programadas e forneça a lógica de hora e data usando uma expressão cron. 

A expressão cron consiste em cinco campos separados por espaços: [Minute] [Hour] [Day\$1of\$1Month] [Month\$1of\$1Year] [Day\$1of\$1Week]. Os campos podem conter quaisquer valores permitidos, incluindo caracteres especiais. 

Por exemplo, esta expressão cron executa a ação todas as terças-feiras às 6h30. O asterisco é usado como um curinga para corresponder a todos os valores de um campo.

```
30 6 * * 2
```

### Consulte também
<a name="scheduling-scaling-see-also"></a>

Para obter mais informações sobre como criar, listar, editar e excluir ações programadas, consulte [Escalabilidade programada para o Amazon EC2 Auto Scaling](ec2-auto-scaling-scheduled-scaling.md).

# Configurações avançadas de política de escalabilidade preditiva usando métricas personalizadas
<a name="predictive-scaling-customized-metric-specification"></a>

Em uma política de escalabilidade preditiva é possível usar métricas predefinidas ou personalizadas. Métricas personalizadas são úteis quando as métricas predefinidas (CPU, E/S da rede e contagem de solicitações do Application Load Balancer) não descrevem suficientemente a carga da aplicação.

Ao criar uma política de escalabilidade preditiva com métricas personalizadas, você pode especificar outras CloudWatch métricas fornecidas por AWS, ou você pode especificar métricas que você mesmo define e publica. Você também pode usar a matemática métrica para agregar e transformar métricas existentes em uma nova série temporal que AWS não é rastreada automaticamente. A combinação de valores em seus dados, por exemplo, calculando novas somas ou médias, é chamada de *agregação*. Os dados resultantes são chamados de um *agregado*.

A seção a seguir contém as práticas recomendados e exemplos de como sstruturar o JSON para a política. 

**Topics**
+ [Práticas recomendadas](#custom-metrics-best-practices)
+ [Pré-requisitos](#custom-metrics-prerequisites)
+ [Estruture o JSON para métricas personalizadas](construct-json-custom-metrics.md)
+ [Criar uma política de escalação preditiva no console (métricas personalizadas)](custom-metrics-troubleshooting.md)
+ [Limitações](#custom-metrics-limitations)

## Práticas recomendadas
<a name="custom-metrics-best-practices"></a>

As seguintes práticas recomendadas podem ajudar no uso mais eficaz de métricas personalizadas:
+ Para a especificação da métrica de carga, a métrica mais útil é uma métrica que represente a carga em um grupo do Auto Scaling como um todo, independentemente da capacidade do grupo.
+ Para a especificação da métrica de escalabilidade, a métrica mais útil para escalar é throughput ou utilização média por métrica de instância.
+ A métrica de escalabilidade deve ser inversamente proporcional à capacidade. Ou seja, se o número de instâncias no grupo do Auto Scaling aumentar, a métrica de escalabilidade deve diminuir aproximadamente na mesma proporção. Para garantir que a escalabilidade preditiva se comporte conforme o esperado, a métrica de carga e a métrica de escalabilidade também devem se correlacionar fortemente entre si. 
+ A utilização visada deve corresponder ao tipo de métrica de escalabilidade. Para uma configuração de política que use a utilização da CPU, essa é uma porcentagem visada. Para uma configuração de política que use throughput, como o número de solicitações ou mensagens, esse é o número visado de solicitações ou mensagens por instância durante qualquer intervalo de um minuto.
+ Se essas recomendações não forem seguidas, provavelmente os valores futuros previstos da série temporal estarão incorretos. Para validar se os dados estão corretos, você pode visualizar os valores previstos no console do Amazon EC2 Auto Scaling. Como alternativa, depois de criar sua política de escalabilidade preditiva, inspecione os `CapacityForecast` objetos `LoadForecast` e os objetos retornados por uma chamada para a API. [GetPredictiveScalingForecast](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_GetPredictiveScalingForecast.html)
+ Recomendamos a configuração da escalabilidade preditiva no modo apenas previsão para avaliar a previsão antes que a escalabilidade preditiva comece a modificar ativamente a capacidade.

## Pré-requisitos
<a name="custom-metrics-prerequisites"></a>

Para adicionar métricas personalizadas à política de escalação preditiva, é necessário ter as permissões `cloudwatch:GetMetricData`.

Para especificar suas próprias métricas em vez das métricas AWS fornecidas, você deve primeiro publicar suas métricas em CloudWatch. Para obter mais informações, consulte [Publicação de métricas personalizadas](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.html) no *Guia CloudWatch do usuário da Amazon*. 

Se publicar suas próprias métricas, certifique-se de publicar os pontos de dados com uma frequência mínima de cinco minutos. O Amazon EC2 Auto Scaling recupera os CloudWatch pontos de dados com base na duração do período necessário. Por exemplo, a especificação da métrica de carga usa métricas horárias para medir a carga em seu aplicativo. CloudWatch usa seus dados métricos publicados para fornecer um único valor de dados para qualquer período de uma hora, agregando todos os pontos de dados com registros de data e hora que se enquadram em cada período de uma hora. 

# Estruture o JSON para métricas personalizadas
<a name="construct-json-custom-metrics"></a>

A seção a seguir contém exemplos de como configurar a escala preditiva para consultar dados. CloudWatch Há dois métodos diferentes de configurar essa opção, e o método escolhido afeta qual será o formato usado para estruturar JSON para a política de escalação preditiva. Quando você usa matemática de métricas, o formato do JSON varia ainda mais com base na matemática de métrica que está sendo aplicada.

1. Para criar uma política que obtenha dados diretamente de outras CloudWatch métricas fornecidas AWS ou nas quais você publica CloudWatch, consulte[Exemplo de política de escalação preditiva com métricas personalizadas de carga e de dimensionamento (AWS CLI)](#custom-metrics-ex1).

1. Para criar uma política que possa consultar várias CloudWatch métricas e usar expressões matemáticas para criar novas séries temporais com base nessas métricas, consulte[Usar expressões de matemática métrica](using-math-expression-examples.md).

## Exemplo de política de escalação preditiva com métricas personalizadas de carga e de dimensionamento (AWS CLI)
<a name="custom-metrics-ex1"></a>

Para criar uma política de escalabilidade preditiva com métricas personalizadas de carga e escalabilidade com o. AWS CLI, armazene os argumentos para `--predictive-scaling-configuration` em um arquivo JSON chamado. `config.json`

Você começa a adicionar métricas personalizadas substituindo os valores substituíveis no exemplo a seguir por suas métricas e sua meta de utilização.

```
{
  "MetricSpecifications": [
    {
      "TargetValue": 50,
      "CustomizedScalingMetricSpecification": {
        "MetricDataQueries": [
          {
            "Id": "scaling_metric",
            "MetricStat": {
              "Metric": {
                "MetricName": "MyUtilizationMetric",
                "Namespace": "MyNameSpace",
                "Dimensions": [
                  {
                    "Name": "MyOptionalMetricDimensionName",
                    "Value": "MyOptionalMetricDimensionValue"
                  }
                ]
              },
              "Stat": "Average"
            }
          }
        ]
      },
      "CustomizedLoadMetricSpecification": {
        "MetricDataQueries": [
          {
            "Id": "load_metric",
            "MetricStat": {
              "Metric": {
                "MetricName": "MyLoadMetric",
                "Namespace": "MyNameSpace",
                "Dimensions": [
                  {
                    "Name": "MyOptionalMetricDimensionName",
                    "Value": "MyOptionalMetricDimensionValue"
                  }
                ]
              },
              "Stat": "Sum"
            }
          }
        ]
      }
    }
  ]
}
```

Para obter mais informações, consulte a [MetricDataQuery](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_MetricDataQuery.html)Referência da API *Amazon EC2 Auto Scaling*.

**nota**  
Veja a seguir alguns recursos adicionais que podem ajudar você a encontrar nomes de métricas, namespaces, dimensões e estatísticas para CloudWatch métricas:   
Para obter informações sobre as métricas disponíveis para AWS serviços, consulte [AWS serviços que publicam CloudWatch métricas](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aws-services-cloudwatch-metrics.html) no *Guia CloudWatch do usuário da Amazon*.
[Para obter o nome exato da métrica, o namespace e as dimensões (se aplicável) de uma CloudWatch métrica com o AWS CLI, consulte list-metrics.](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudwatch/list-metrics.html) 

Para criar essa política, execute o [put-scaling-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-scaling-policy.html)comando usando o arquivo JSON como entrada, conforme demonstrado no exemplo a seguir.

```
aws autoscaling put-scaling-policy --policy-name my-predictive-scaling-policy \
  --auto-scaling-group-name my-asg --policy-type PredictiveScaling \
  --predictive-scaling-configuration file://config.json
```

Se bem-sucedido, esse comando gerará o nome do recurso da Amazon (ARN) da política.

```
{
  "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:2f4f5048-d8a8-4d14-b13a-d1905620f345:autoScalingGroupName/my-asg:policyName/my-predictive-scaling-policy",
  "Alarms": []
}
```

# Usar expressões de matemática métrica
<a name="using-math-expression-examples"></a>

A seção a seguir fornece informações e exemplos de políticas de escalação preditiva que mostram como você pode usar a matemática de métricas em sua política. 

**Topics**
+ [Noções básicas de matemática métrica](#custom-metrics-metric-math)
+ [Exemplo de política de escalação preditiva que combina métricas por meio da matemática de métricas (AWS CLI)](#custom-metrics-ex2)
+ [Exemplo de política de escalabilidade preditiva para usar em um cenário de blue/green implantação ()AWS CLI](#custom-metrics-ex3)

## Noções básicas de matemática métrica
<a name="custom-metrics-metric-math"></a>

Se tudo o que você quer fazer é agregar dados métricos existentes, a matemática CloudWatch métrica poupa o esforço e o custo de publicar outra métrica no. CloudWatch Você pode usar qualquer métrica que AWS forneça e também pode usar métricas que você define como parte de seus aplicativos. Por exemplo, talvez você queira calcular a lista de pendências da fila do Amazon SQS por instância. Você pode fazer isso usando o número aproximado de mensagens disponíveis para recuperação da fila e dividindo esse número pela capacidade de execução do grupo do Auto Scaling.

Para obter mais informações, consulte [Usando matemática métrica](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html) no *Guia CloudWatch do usuário da Amazon*. 

Se você optar por usar uma expressão matemática métrica em sua política de escalabilidade preditiva, considere os seguintes pontos:
+ As operações matemáticas métricas usam os pontos de dados da combinação exclusiva de nome da métrica, namespace e pares de métricas de chaves-valor da dimensão. 
+ Você pode usar qualquer operador aritmético (\$1 - \$1/^), função estatística (como AVG ou SUM) ou outra função compatível. CloudWatch 
+ Você pode usar as métricas e os resultados de outras expressões matemáticas nas fórmulas da expressão matemática. 
+ Suas expressões matemáticas métricas podem ser compostas de agregações diferentes. No entanto, uma prática recomendada para o resultado final da agregação é usar `Average` para a métrica de escalabilidade e `Sum` para a métrica de carga.
+ Qualquer expressão usada em uma especificação de métrica deve eventualmente retornar uma única série temporal.

Para usar matemática métrica, faça o seguinte:
+ Escolha uma ou mais CloudWatch métricas. Em seguida, crie a expressão. Para obter mais informações, consulte [Usando matemática métrica](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html) no *Guia CloudWatch do usuário da Amazon*. 
+ Verifique se a expressão matemática métrica é válida usando o CloudWatch console ou a CloudWatch [GetMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html)API.

## Exemplo de política de escalação preditiva que combina métricas por meio da matemática de métricas (AWS CLI)
<a name="custom-metrics-ex2"></a>

Às vezes, ao invés de especificar a métrica diretamente, talvez seja necessário processar seus dados de alguma forma, primeiramente. Por exemplo, você pode ter uma aplicação que extrai o trabalho de uma fila do Amazon SQS e talvez queira usar o número de itens na fila como critério para escalabilidade preditiva. O número de mensagens na fila não define unicamente o número necessário de instâncias. Portanto, é necessário mais trabalho para criar uma métrica que possa ser usada para calcular a lista de pendências por instância. Para obter mais informações, consulte [Ajuste de escala baseado no Amazon SQS](as-using-sqs-queue.md).

Veja a seguir um exemplo de política de escalabilidade preditiva para esse cenário. Ele especifica métricas de escalabilidade e carga baseadas na métrica `ApproximateNumberOfMessagesVisible` do Amazon SQS, que é o número de mensagens disponíveis para recuperação da fila. Ele também usa a métrica `GroupInServiceInstances` do Amazon EC2 Auto Scaling e uma expressão matemática para calcular a lista de pendências por instância para a métrica de escalabilidade.

```
aws autoscaling put-scaling-policy --policy-name my-sqs-custom-metrics-policy \
  --auto-scaling-group-name my-asg --policy-type PredictiveScaling \
  --predictive-scaling-configuration file://config.json
{
  "MetricSpecifications": [
    {
      "TargetValue": 100,
      "CustomizedScalingMetricSpecification": {
        "MetricDataQueries": [
          {
            "Label": "Get the queue size (the number of messages waiting to be processed)",
            "Id": "queue_size",
            "MetricStat": {
              "Metric": {
                "MetricName": "ApproximateNumberOfMessagesVisible",
                "Namespace": "AWS/SQS",
                "Dimensions": [
                  {
                    "Name": "QueueName",
                    "Value": "my-queue"
                  }
                ]
              },
              "Stat": "Sum"
            },
            "ReturnData": false
          },
          {
            "Label": "Get the group size (the number of running instances)",
            "Id": "running_capacity",
            "MetricStat": {
              "Metric": {
                "MetricName": "GroupInServiceInstances",
                "Namespace": "AWS/AutoScaling",
                "Dimensions": [
                  {
                    "Name": "AutoScalingGroupName",
                    "Value": "my-asg"
                  }
                ]
              },
              "Stat": "Sum"
            },
            "ReturnData": false
          },
          {
            "Label": "Calculate the backlog per instance",
            "Id": "scaling_metric",
            "Expression": "queue_size / running_capacity",
            "ReturnData": true
          }
        ]
      },
      "CustomizedLoadMetricSpecification": {
        "MetricDataQueries": [
          {
            "Id": "load_metric",
            "MetricStat": {
              "Metric": {
                "MetricName": "ApproximateNumberOfMessagesVisible",
                "Namespace": "AWS/SQS",
                "Dimensions": [
                  {
                    "Name": "QueueName",
                    "Value": "my-queue"
                  }
                ],
              },
              "Stat": "Sum"
            },
            "ReturnData": true
          }
        ]
      }
    }
  ]
}
```

O exemplo retorna o ARN da política.

```
{
  "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:2f4f5048-d8a8-4d14-b13a-d1905620f345:autoScalingGroupName/my-asg:policyName/my-sqs-custom-metrics-policy",
  "Alarms": []
}
```

## Exemplo de política de escalabilidade preditiva para usar em um cenário de blue/green implantação ()AWS CLI
<a name="custom-metrics-ex3"></a>

Uma expressão de pesquisa fornece uma opção avançada na qual você pode consultar para obter uma métrica de vários grupos do Auto Scaling e realizar expressões matemáticas neles. Isso é especialmente útil para blue/green implantações. 

**nota**  
Uma *implantação azul/verde* é um método de implantação no qual você cria dois grupos do Auto Scaling separados, mas idênticos. Apenas um dos grupos recebe tráfego de produção. O tráfego do usuário é inicialmente direcionado para o grupo do Auto Scaling anterior (“azul”), enquanto um novo grupo (“verde”) é usado para testar e avaliar uma nova versão de uma aplicação ou serviço. O tráfego do usuário é deslocado para o grupo do Auto Scaling verde depois que uma nova implantação é testada e aceita. Em seguida, é possível excluir o grupo azul depois que a implantação for bem-sucedida.

Quando novos grupos de Auto Scaling são criados como parte de uma blue/green implantação, o histórico métrico de cada grupo pode ser incluído automaticamente na política de escalabilidade preditiva sem que você precise alterar suas especificações métricas. Para obter mais informações, consulte [Usando políticas de escalabilidade preditiva do EC2 Auto Scaling com implantações](https://aws.amazon.com/blogs/compute/retaining-metrics-across-blue-green-deployment-for-predictive-scaling/) azul/verdes no blog de computação. AWS 

O exemplo de política a seguir mostra como isso pode ser feito. Neste exemplo, a política usa a métrica `CPUUtilization` emitida pelo Amazon EC2. Ela também usa a métrica `GroupInServiceInstances` do Amazon EC2 Auto Scaling e uma expressão matemática para calcular o valor da métrica de escalabilidade por instância. Ela também especifica uma especificação de métrica de capacidade para obter a métrica `GroupInServiceInstances`.

A expressão de pesquisa encontra o `CPUUtilization` de instâncias em vários grupos do Auto Scaling com base nos critérios de pesquisa especificados. Se, posteriormente, você criar um novo grupo do Auto Scaling que corresponda aos mesmos critérios de pesquisa, o `CPUUtilization` das instâncias no novo grupo do Auto Scaling são incluídas automaticamente.

```
aws autoscaling put-scaling-policy --policy-name my-blue-green-predictive-scaling-policy \
  --auto-scaling-group-name my-asg --policy-type PredictiveScaling \
  --predictive-scaling-configuration file://config.json
{
  "MetricSpecifications": [
    {
      "TargetValue": 25,
      "CustomizedScalingMetricSpecification": {
        "MetricDataQueries": [
          {
            "Id": "load_sum",
            "Expression": "SUM(SEARCH('{AWS/EC2,AutoScalingGroupName} MetricName=\"CPUUtilization\" ASG-myapp', 'Sum', 300))",
            "ReturnData": false
          },
          {
            "Id": "capacity_sum",
            "Expression": "SUM(SEARCH('{AWS/AutoScaling,AutoScalingGroupName} MetricName=\"GroupInServiceInstances\" ASG-myapp', 'Average', 300))",
            "ReturnData": false
          },
          {
            "Id": "weighted_average",
            "Expression": "load_sum / capacity_sum",
            "ReturnData": true
          }
        ]
      },
      "CustomizedLoadMetricSpecification": {
        "MetricDataQueries": [
          {
            "Id": "load_sum",
            "Expression": "SUM(SEARCH('{AWS/EC2,AutoScalingGroupName} MetricName=\"CPUUtilization\" ASG-myapp', 'Sum', 3600))"
          }
        ]
      },
      "CustomizedCapacityMetricSpecification": {
        "MetricDataQueries": [
          {
            "Id": "capacity_sum",
            "Expression": "SUM(SEARCH('{AWS/AutoScaling,AutoScalingGroupName} MetricName=\"GroupInServiceInstances\" ASG-myapp', 'Average', 300))"
          }
        ]
      }
    }
  ]
}
```

O exemplo retorna o ARN da política.

```
{
  "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:2f4f5048-d8a8-4d14-b13a-d1905620f345:autoScalingGroupName/my-asg:policyName/my-blue-green-predictive-scaling-policy",
  "Alarms": []
}
```

# Criar uma política de escalação preditiva no console (métricas personalizadas)
<a name="custom-metrics-troubleshooting"></a>

Se ocorrer um problema ao usar métricas personalizadas, recomendamos fazer o seguinte:
+ Se uma mensagem de erro for fornecida, leia a mensagem e resolva o problema que ela relata, se possível. 
+ Se ocorrer um problema ao tentar usar uma expressão de pesquisa em um cenário de blue/green implantação, primeiro certifique-se de entender como criar uma expressão de pesquisa que procure uma correspondência parcial em vez de uma correspondência exata. Além disso, confira se sua consulta localiza apenas os grupos do Auto Scaling que estão executando a aplicação específica. Para obter mais informações sobre a sintaxe da expressão de pesquisa, consulte a [sintaxe CloudWatch da expressão de pesquisa](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/search-expression-syntax.html) no Guia * CloudWatch do usuário da Amazon*. 
+ Se você não validou uma expressão com antecedência, o [put-scaling-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-scaling-policy.html)comando a valida ao criar sua política de escalabilidade. No entanto, existe a possibilidade de que esse comando não identifique a causa exata dos erros detectados. Para corrigir os problemas, solucione os erros que você recebe em uma resposta de uma solicitação ao [get-metric-data](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudwatch/get-metric-data.html)comando. Você também pode solucionar o problema da expressão no CloudWatch console.
+ Quando você visualiza os gráficos de **Carga** e de **Capacidade** no console, o gráfico da **Capacidade** pode não mostrar nenhum dado. Para garantir que os gráficos tenham dados completos, certifique-se de habilitar consistentemente métricas de grupo para seus grupos do Auto Scaling. Para obter mais informações, consulte [Ativar métricas do grupo do Auto Scaling (console)](ec2-auto-scaling-metrics.md#as-enable-group-metrics).
+ A especificação da métrica de capacidade só é útil para implantações azul/verde quando você tem aplicações que são executadas em diferentes grupos do Auto Scaling ao longo de suas vidas úteis. Essa métrica personalizada permite que você forneça a capacidade total de vários grupos do Auto Scaling. A escalabilidade preditiva usa isso para mostrar dados históricos nos gráficos de **Capacidade** no console.
+ É necessário especificar `false` para `ReturnData` se `MetricDataQueries` especificar a função SEARCH() (BUSCAR) por conta própria sem uma função matemática como SUM() (SOMA). Isso ocorre porque as expressões de pesquisa podem retornar várias séries temporais, e uma especificação métrica baseado em uma expressão pode retornar apenas uma série temporal.
+ Todas as métricas envolvidas em uma expressão de pesquisa devem ter a mesma resolução.

## Limitações
<a name="custom-metrics-limitations"></a>
+ Você pode consultar pontos de dados de até 10 métricas em uma especificação métrica.
+ Para os propósitos desse limite, uma expressão conta como uma métrica.