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

Crie uma política de escalabilidade de rastreamento de destino para o Application Auto Scaling usando 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 tarefa

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 Uso de métricas personalizadas pelo Auto Scaling do Amazon Elastic Container Service (ECS) no blog de computação da AWS.

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, 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 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
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 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 TargetTrackingScalingPolicyConfiguration na Referência de API do Application 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 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 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: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 lançar um erro, verifique se você atualizou a AWS CLI localmente para a versão mais recente.

Limitações

  • O tamanho máximo da solicitação é de 50 KB. Este é o tamanho total da carga útil para a solicitação de API PutScalingPolicy quando você usa matemática em métricas na definição de 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