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. Por exemplo, talvez você queira calcular o backlog de SQS filas da Amazon por instância. Você pode fazer isso usando o número aproximado de mensagens disponíveis para recuperação da fila e dividindo esse número pela capacidade de execução do grupo do Auto Scaling.
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 ouSUM) ou outra função que ofereça suporte. 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
Average
para a métrica de escalabilidade eSum
para 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 CloudWatch GetMetricDataAPIo.
Exemplo de política de escalação preditiva que combina métricas por meio da matemática de métricas (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 um aplicativo que extrai trabalho de uma SQS fila da Amazon 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. Para obter mais informações, consulte Política de escalabilidade baseada na Amazon SQS.
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 SQS ApproximateNumberOfMessagesVisible
métrica da Amazon, 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 a políticaARN.
{
"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 escalação preditiva para usar em um cenário de implantação azul/verde (AWS CLI)
Uma expressão de pesquisa fornece uma opção avançada na qual você pode consultar para obter uma métrica de vários grupos do Auto Scaling e realizar expressões matemáticas neles. Isso é útil especialmente para implantações azul/verde.
nota
Uma implantação azul/verde é um método de implantação no qual você cria dois grupos do Auto Scaling separados, mas idênticos. Apenas um dos grupos recebe tráfego de produção. O tráfego do usuário é inicialmente direcionado para o grupo do Auto Scaling anterior (“azul”), enquanto um novo grupo (“verde”) é usado para testar e avaliar uma nova versão de uma aplicação ou serviço. O tráfego do usuário é deslocado para o grupo do Auto Scaling verde 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 Auto Scaling são criados como parte de uma implantação azul/verde, o histórico de métricas 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 AmazonEC2. 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 CPUUtilization
de instâncias em vários grupos do Auto Scaling com base nos critérios de pesquisa especificados. Se, posteriormente, você criar um novo grupo do Auto Scaling que corresponda aos mesmos critérios de pesquisa, o CPUUtilization
das instâncias no novo grupo do Auto Scaling sã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 a políticaARN.
{
"PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:2f4f5048-d8a8-4d14-b13a-d1905620f345:autoScalingGroupName/my-asg:policyName/my-blue-green-predictive-scaling-policy",
"Alarms": []
}