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á.
Usar expressões de matemática métrica
A seção a seguir fornece informações e exemplos de políticas de escalação preditiva que mostram como você pode usar a matemática de métricas em sua política.
Tópicos
Noções básicas de matemática métrica
Se tudo o que você quer fazer é agregar dados métricos existentes, a matemática CloudWatch métrica poupa o esforço e o custo de publicar outra métrica no. CloudWatch Você pode usar qualquer métrica que AWS forneça e também pode usar métricas que você define como parte de seus aplicativos.
Para obter mais informações, consulte Usando matemática métrica no Guia CloudWatch do usuário da Amazon.
Se você optar por usar uma expressão matemática métrica em sua política de escalabilidade preditiva, considere os seguintes pontos:
-
As operações matemáticas métricas usam os pontos de dados da combinação exclusiva de nome da métrica, namespace e pares de métricas de chaves-valor da dimensão.
-
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.
-
Suas expressões matemáticas métricas podem ser compostas de agregações diferentes. No entanto, uma prática recomendada para o resultado final da agregação é usar
Averagepara a métrica de escalabilidade eSumpara a métrica de carga. -
Qualquer expressão usada em uma especificação de métrica deve eventualmente retornar uma única série temporal.
Para usar matemática métrica, faça o seguinte:
-
Escolha uma ou mais CloudWatch métricas. Em seguida, crie a expressão. Para obter mais informações, consulte Usando matemática métrica no Guia CloudWatch do usuário da Amazon.
-
Verifique se a expressão matemática métrica é válida usando o CloudWatch console ou a CloudWatch GetMetricDataAPI.
Exemplo de política de escalabilidade preditiva para o Amazon Auto EC2 Scaling que combina métricas usando matemática métrica ()AWS CLI
Às vezes, ao invés de especificar a métrica diretamente, talvez seja necessário processar seus dados de alguma forma, primeiramente. Por exemplo, você pode ter uma aplicação que extrai o trabalho de uma fila do Amazon SQS e talvez queira usar o número de itens na fila como critério para escalabilidade preditiva. O número de mensagens na fila não define unicamente o número necessário de instâncias. Portanto, é necessário mais trabalho para criar uma métrica que possa ser usada para calcular a lista de pendências por instância.
Veja a seguir um exemplo de política de escalabilidade preditiva para esse cenário. Ele especifica métricas de escalabilidade e carga baseadas na métrica ApproximateNumberOfMessagesVisible do Amazon SQS, que é o número de mensagens disponíveis para recuperação da fila. Ele também usa a GroupInServiceInstances métrica Amazon EC2 Auto Scaling e uma expressão matemática para calcular o backlog por instância da métrica de escalabilidade.
aws autoscaling put-scaling-policy --policy-name my-sqs-custom-metrics-policy \
--auto-scaling-group-name my-asg --policy-type PredictiveScaling \
--predictive-scaling-configuration file://config.json
{
"MetricSpecifications": [
{
"TargetValue": 100,
"CustomizedScalingMetricSpecification": {
"MetricDataQueries": [
{
"Label": "Get the queue size (the number of messages waiting to be processed)",
"Id": "queue_size",
"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 running instances)",
"Id": "running_capacity",
"MetricStat": {
"Metric": {
"MetricName": "GroupInServiceInstances",
"Namespace": "AWS/AutoScaling",
"Dimensions": [
{
"Name": "AutoScalingGroupName",
"Value": "my-asg"
}
]
},
"Stat": "Sum"
},
"ReturnData": false
},
{
"Label": "Calculate the backlog per instance",
"Id": "scaling_metric",
"Expression": "queue_size / running_capacity",
"ReturnData": true
}
]
},
"CustomizedLoadMetricSpecification": {
"MetricDataQueries": [
{
"Id": "load_metric",
"MetricStat": {
"Metric": {
"MetricName": "ApproximateNumberOfMessagesVisible",
"Namespace": "AWS/SQS",
"Dimensions": [
{
"Name": "QueueName",
"Value": "my-queue"
}
],
},
"Stat": "Sum"
},
"ReturnData": true
}
]
}
}
]
}
O exemplo retorna o ARN da política.
{
"PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:2f4f5048-d8a8-4d14-b13a-d1905620f345:autoScalingGroupName/my-asg:policyName/my-sqs-custom-metrics-policy",
"Alarms": []
}
Exemplo de política de escalabilidade preditiva para usar em um cenário de blue/green implantação ()AWS CLI
Uma expressão de pesquisa fornece uma opção avançada na qual você pode consultar uma métrica de vários grupos do Amazon EC2 Auto Scaling e executar expressões matemáticas neles. Isso é especialmente útil para blue/green implantações.
nota
Uma implantação azul/verde é um método de implantação no qual você cria dois grupos separados, mas idênticos, do Amazon Auto EC2 Scaling. Apenas um dos grupos recebe tráfego de produção. O tráfego de usuários é direcionado inicialmente para o grupo anterior (“azul”) do Amazon EC2 Auto Scaling, enquanto um novo grupo (“verde”) é usado para testar e avaliar uma nova versão de um aplicativo ou serviço. O tráfego de usuários é transferido para o grupo verde Amazon EC2 Auto Scaling depois que uma nova implantação é testada e aceita. Em seguida, é possível excluir o grupo azul depois que a implantação for bem-sucedida.
Quando novos grupos do Amazon EC2 Auto Scaling são criados como parte de uma blue/green implantação, o histórico métrico de cada grupo pode ser incluído automaticamente na política de escalabilidade preditiva sem que você precise alterar suas especificações métricas. Para obter mais informações, consulte Como usar políticas de escalabilidade preditiva do EC2 Auto Scaling com implantações azul/verde
O exemplo de política a seguir mostra como isso pode ser feito. Neste exemplo, a política usa a CPUUtilization métrica emitida pela Amazon EC2. Ele usa a GroupInServiceInstances métrica Amazon EC2 Auto Scaling e uma expressão matemática para calcular o valor da métrica de escalabilidade por instância. Ela também especifica uma especificação de métrica de capacidade para obter a métrica GroupInServiceInstances.
A expressão de pesquisa encontra o número CPUUtilization de instâncias em vários grupos do Amazon EC2 Auto Scaling com base nos critérios de pesquisa especificados. Se você criar posteriormente um novo grupo do Amazon EC2 Auto Scaling que corresponda aos mesmos critérios CPUUtilization de pesquisa, as instâncias no novo grupo do Amazon Auto EC2 Scaling serão incluídas automaticamente.
aws autoscaling put-scaling-policy --policy-name my-blue-green-predictive-scaling-policy \
--auto-scaling-group-name my-asg --policy-type PredictiveScaling \
--predictive-scaling-configuration file://config.json
{
"MetricSpecifications": [
{
"TargetValue": 25,
"CustomizedScalingMetricSpecification": {
"MetricDataQueries": [
{
"Id": "load_sum",
"Expression": "SUM(SEARCH('{AWS/EC2,AutoScalingGroupName} MetricName=\"CPUUtilization\" ASG-myapp', 'Sum', 300))",
"ReturnData": false
},
{
"Id": "capacity_sum",
"Expression": "SUM(SEARCH('{AWS/AutoScaling,AutoScalingGroupName} MetricName=\"GroupInServiceInstances\" ASG-myapp', 'Average', 300))",
"ReturnData": false
},
{
"Id": "weighted_average",
"Expression": "load_sum / capacity_sum",
"ReturnData": true
}
]
},
"CustomizedLoadMetricSpecification": {
"MetricDataQueries": [
{
"Id": "load_sum",
"Expression": "SUM(SEARCH('{AWS/EC2,AutoScalingGroupName} MetricName=\"CPUUtilization\" ASG-myapp', 'Sum', 3600))"
}
]
},
"CustomizedCapacityMetricSpecification": {
"MetricDataQueries": [
{
"Id": "capacity_sum",
"Expression": "SUM(SEARCH('{AWS/AutoScaling,AutoScalingGroupName} MetricName=\"GroupInServiceInstances\" ASG-myapp', 'Average', 300))"
}
]
}
}
]
}
O exemplo retorna o ARN da política.
{
"PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:2f4f5048-d8a8-4d14-b13a-d1905620f345:autoScalingGroupName/my-asg:policyName/my-blue-green-predictive-scaling-policy",
"Alarms": []
}