Crie uma política de escalabilidade de rastreamento de destino para Amazon EC2 Auto Scaling usando matemática em métricas - Amazon EC2 Auto Scaling

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 Amazon EC2 Auto Scaling usando matemática em métricas

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 CloudWatch console e adicioná-las aos painéis. Para obter mais informações sobre matemática métrica, consulte Usando matemática métrica 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 (+ - */^), 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 API CloudWatch GetMetricde dados.

nota

Você pode criar uma política de escalabilidade de rastreamento de metas usando matemática métrica somente se usar o AWS CLI, AWS CloudFormation, ou um SDK. Este atributo ainda não está disponível no console.

Exemplo: lista de pendências da fila do Amazon SQS por instância

Para calcular a lista de pendências da fila do Amazon SQS por instância, use o número aproximado de mensagens disponíveis para recuperação da fila e divida esse número pela capacidade de execução do grupo do, que corresponde ao número de instâncias no estadoInService. Para ter mais informações, consulte Escalabilidade baseada no Amazon SQS.

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

sum of (number of messages in the queue)/(number of InService instances)

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

ID CloudWatch métrica Estatística Período
m1 ApproximateNumberOfMessagesVisível Soma 1 minuto
m2 GroupInServiceInstances 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 diagrama a seguir ilustra a arquitetura dessa métrica:

Diagrama de arquitetura do Amazon EC2 Auto Scaling usando filas
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 espaço reservado para entrada do usuário 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 group size (the number of InService instances)", "Id": "m2", "MetricStat": { "Metric": { "MetricName": "GroupInServiceInstances", "Namespace": "AWS/AutoScaling", "Dimensions": [ { "Name": "AutoScalingGroupName", "Value": "my-asg" } ] }, "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 TargetTrackingConfiguração na Referência da API Auto Scaling do Amazon EC2.

    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:

  2. Para criar essa política, execute o comando put-scaling-policy usando como entrada o arquivo JSON, como demonstrado no exemplo a seguir.

    aws autoscaling put-scaling-policy --policy-name sqs-backlog-target-tracking-scaling-policy \ --auto-scaling-group-name my-asg --policy-type TargetTrackingScaling \ --target-tracking-configuration file://config.json

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

    { "PolicyARN": "arn:aws:autoscaling:us-west-2:123456789012:scalingPolicy:228f02c2-c665-4bfd-aaac-8b04080bea3c:autoScalingGroupName/my-asg:policyName/sqs-backlog-target-tracking-scaling-policy", "Alarms": [ { "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e", "AlarmName": "TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e" }, { "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2", "AlarmName": "TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2" } ] }
    nota

    Se esse comando gerar um erro, verifique se você atualizou o AWS CLI localmente para a versão mais recente.