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.
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áriopor 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
.
-
-
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-namesqs-backlog-target-tracking-scaling-policy\ --auto-scaling-group-namemy-asg--policy-type TargetTrackingScaling \ --target-tracking-configurationfile://config.jsonSe 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.