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)
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:
Para usar essa matemática em métricas na criação de uma política de escalabilidade com monitoramento de destino (AWS CLI)
-
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.
-
-
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-idservice/my-cluster/my-service
\ --policy-type TargetTrackingScaling --target-tracking-scaling-policy-configurationfile://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
-