Criação de uma política de escalabilidade com monitoramento de destino com a matemática em métricas - Amazon EC2 Auto Scaling

Criação de uma política de escalabilidade com monitoramento de destino com a matemática em métricas

Com matemática métrica, você pode consultar várias métricas do CloudWatch e usar expressões matemáticas para criar novas séries temporais de acordo com essas métricas. Você pode visualizar as séries temporais resultantes no console do CloudWatch e adicioná-las aos painéis. Para obter mais informações sobre matemática métrica, consulte Usar matemática métrica no Guia do usuário do Amazon CloudWatch.

As considerações a seguir se aplicam a expressões matemática em métricas:

  • Você pode consultar qualquer métrica do 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 com o 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.

  • Verifique se a expressão matemática métrica é válida usando o console do CloudWatch ou a API do CloudWatch GetMetricData.

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 obter mais informações, consulte Ajuste de escala baseado 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, as informações da sua métrica do são as seguintes:

ID métrica do cloudwatch Estatística Período
m1 ApproximateNumberOfMessagesVisible 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 desse padrão.

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 TargetTrackingConfiguration na Referência da API do 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 as métricas do CloudWatch:

    • Para mais informações sobre as métricas disponíveis para produtos da AWS, consulte Produtos da AWS que publicam métricas do CloudWatch no Guia do usuário do Amazon CloudWatch.

    • Para obter os valores exatos de nome da métrica, namespace e dimensões (se aplicável) para uma métrica do CloudWatch com a AWS CLI, consulte list-metrics.

  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 obtiver êxito, esse comando retornará o nome do recurso da Amazon (ARN) da política e os ARNs dos dois alarmes do CloudWatch 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 lançar um erro, verifique se você atualizou a AWS CLI localmente para a versão mais recente.