

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

# Crie uma política de escalabilidade de rastreamento de destino para o Application Auto Scaling usando matemática em métricas
<a name="application-auto-scaling-target-tracking-metric-math"></a>

Usando 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 console do CloudWatch 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*. 

As considerações a seguir se aplicam a expressões matemática em métricas:
+ Você pode consultar qualquer CloudWatch métrica disponível. Cada métrica corresponde a uma combinação exclusiva de nome de métrica, espaço nominal e zero ou mais dimensões. 
+ 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. 
+ Qualquer expressão usada em uma especificação de métrica deve eventualmente retornar uma única série temporal.
+ Você pode verificar se uma 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.

**Topics**
+ [Exemplo: lista de pendências da fila do Amazon SQS por tarefa](#metric-math-sqs-queue-backlog)
+ [Limitações](#metric-math-limitations)

## Exemplo: lista de pendências da fila do Amazon SQS por tarefa
<a name="metric-math-sqs-queue-backlog"></a>

Para calcular a lista de pendências da fila do Amazon SQS por tarefa, use o número aproximado de mensagens disponíveis para recuperação da fila e divida esse número pelo número de tarefas do Amazon ECS em execução no serviço. Para obter mais informações, consulte [Amazon Elastic Container Service (ECS) Auto Scaling usando métricas personalizadas](https://aws.amazon.com/blogs/containers/amazon-elastic-container-service-ecs-auto-scaling-using-custom-metrics/) AWS no blog de computação.

A lógica da expressão é a seguinte:

 `sum of (number of messages in the queue)/(number of tasks that are currently in the RUNNING state)`

Então, suas informações CloudWatch métricas são as seguintes.


| ID | CloudWatch métrica | Estatística | Período | 
| --- | --- | --- | --- | 
| m1 | ApproximateNumberOfMessagesVisible | Soma | 1 minuto | 
| m2 | RunningTaskCount | Média | 1 minuto | 

O ID e a expressão matemáticos da métrica são os seguintes:


| ID | Expressão | 
| --- | --- | 
| e1 | (m1)/(m2) | 

O seguinte diagrama ilustra a arquitetura dessa métrica:

![\[Diagrama de arquitetura do Application Auto Scaling usando filas\]](http://docs.aws.amazon.com/pt_br/autoscaling/application/userguide/images/sqs-custom-metric-diagram.png)


**Para usar essa matemática em métricas na criação de uma política de escalabilidade com monitoramento de destino (AWS CLI)**

1. Armazene a expressão matemática em métricas como parte de uma especificação de métrica personalizada em um arquivo JSON denominado `config.json`. 

   Use o exemplo a seguir como auxílio para começar. Substitua cada *user input placeholder* por suas próprias informações.

   ```
   {
       "CustomizedMetricSpecification": {
           "Metrics": [
               {
                   "Label": "Get the queue size (the number of messages waiting to be processed)",
                   "Id": "m1",
                   "MetricStat": {
                       "Metric": {
                           "MetricName": "ApproximateNumberOfMessagesVisible",
                           "Namespace": "AWS/SQS",
                           "Dimensions": [
                               {
                                   "Name": "QueueName",
                                   "Value": "my-queue"
                               }
                           ]
                       },
                       "Stat": "Sum"
                   },
                   "ReturnData": false
               },
               {
                   "Label": "Get the ECS running task count (the number of currently running tasks)",
                   "Id": "m2",
                   "MetricStat": {
                       "Metric": {
                           "MetricName": "RunningTaskCount",
                           "Namespace": "ECS/ContainerInsights",
                           "Dimensions": [
                               {
                                   "Name": "ClusterName",
                                   "Value": "my-cluster"
                               },
                               {
                                   "Name": "ServiceName",
                                   "Value": "my-service"
                               }
                           ]
                       },
                       "Stat": "Average"
                   },
                   "ReturnData": false
               },
               {
                   "Label": "Calculate the backlog per instance",
                   "Id": "e1",
                   "Expression": "m1 / m2",
                   "ReturnData": true
               }
           ]
       },
       "TargetValue": 100
   }
   ```

   Para obter mais informações, consulte a Referência [TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html)da *API Application Auto Scaling*.
**nota**  
Veja a seguir alguns recursos adicionais que podem ajudá-lo 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://docs.aws.amazon.com/cli/latest/reference/cloudwatch/list-metrics.html) 

1. Para criar essa política, execute o [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html)comando usando o arquivo JSON como entrada, conforme demonstrado no exemplo a seguir.

   ```
   aws application-autoscaling put-scaling-policy --policy-name sqs-backlog-target-tracking-scaling-policy \
     --service-namespace ecs --scalable-dimension ecs:service:DesiredCount --resource-id service/my-cluster/my-service \
     --policy-type TargetTrackingScaling --target-tracking-scaling-policy-configuration file://config.json
   ```

   Se for bem-sucedido, esse comando retornará o Amazon Resource Name (ARN) da política e o ARNs dos dois CloudWatch alarmes criados em seu nome.

   ```
   {
       "PolicyARN": "arn:aws:autoscaling:us-west-2:012345678910:scalingPolicy: 8784a896-b2ba-47a1-b08c-27301cc499a1:resource/ecs/service/my-cluster/my-service:policyName/sqs-backlog-target-tracking-scaling-policy",
       "Alarms": [
           {
               "AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:TargetTracking-service/my-cluster/my-service-AlarmHigh-9bc77b56-0571-4276-ba0f-d4178882e0a0",
               "AlarmName": "TargetTracking-service/my-cluster/my-service-AlarmHigh-9bc77b56-0571-4276-ba0f-d4178882e0a0"
           },
           {
               "AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:TargetTracking-service/my-cluster/my-service-AlarmLow-9b6ad934-6d37-438e-9e05-02836ddcbdc4",
               "AlarmName": "TargetTracking-service/my-cluster/my-service-AlarmLow-9b6ad934-6d37-438e-9e05-02836ddcbdc4"
           }
       ]
   }
   ```
**nota**  
Se esse comando gerar um erro, verifique se você atualizou o AWS CLI localmente para a versão mais recente.

## Limitações
<a name="metric-math-limitations"></a>
+ O tamanho máximo da solicitação é de 50 KB. Esse é o tamanho total da carga útil da solicitação de [PutScalingPolicy](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_PutScalingPolicy.html)API quando você usa matemática métrica na definição da política. Se você exceder esse limite, o Application Auto Scaling rejeitará a solicitação.
+ Os seguintes serviços não têm suporte ao usar a matemática em métricas com políticas de escalabilidade de rastreamento de destino:
  + Amazon Keyspaces (para Apache Cassandra) 
  + DynamoDB
  + Amazon EMR
  + Amazon MSK
  + Amazon Neptune