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á.
Configurações avançadas de política de escalabilidade preditiva usando métricas personalizadas
Em uma política de escalabilidade preditiva é possível usar métricas predefinidas ou personalizadas. Métricas personalizadas são úteis quando as métricas predefinidas (CPU, E/S da rede e contagem de solicitações do Application Load Balancer) não descrevem suficientemente a carga da aplicação.
Ao criar uma política de escalabilidade preditiva com métricas personalizadas, você pode especificar outras CloudWatch métricas fornecidas pelaAWS ou especificar métricas que você mesmo define e publica. Você também pode usar a matemática de métricas para agregar e transformar métricas existentes em uma nova série temporal que a AWS não rastreia automaticamente. A combinação de valores em seus dados, por exemplo, calculando novas somas ou médias, é chamada de agregação. Os dados resultantes são chamados de um agregado.
A seção a seguir contém as práticas recomendados e exemplos de como sstruturar o JSON para a política.
Índice
Práticas recomendadas
As seguintes práticas recomendadas podem ajudar no uso mais eficaz de métricas personalizadas:
-
Para a especificação da métrica de carga, a métrica mais útil é uma métrica que represente a carga em um grupo do Auto Scaling como um todo, independentemente da capacidade do grupo.
-
Para a especificação da métrica de escalabilidade, a métrica mais útil para escalar é throughput ou utilização média por métrica de instância.
-
A métrica de escalabilidade deve ser inversamente proporcional à capacidade. Ou seja, se o número de instâncias no grupo do Auto Scaling aumentar, a métrica de escalabilidade deve diminuir aproximadamente na mesma proporção. Para garantir que a escalabilidade preditiva se comporte conforme o esperado, a métrica de carga e a métrica de escalabilidade também devem se correlacionar fortemente entre si.
-
A utilização visada deve corresponder ao tipo de métrica de escalabilidade. Para uma configuração de política que use a utilização da CPU, essa é uma porcentagem visada. Para uma configuração de política que use throughput, como o número de solicitações ou mensagens, esse é o número visado de solicitações ou mensagens por instância durante qualquer intervalo de um minuto.
-
Se essas recomendações não forem seguidas, provavelmente os valores futuros previstos da série temporal estarão incorretos. Para validar se os dados estão corretos, você pode visualizar os valores previstos no console do Amazon EC2 Auto Scaling. Como alternativa, depois de criar sua política de escalabilidade preditiva, inspecione os
CapacityForecast
objetosLoadForecast
e retornados por uma chamada para a GetPredictiveScalingForecastAPI. -
Recomendamos a configuração da escalabilidade preditiva no modo apenas previsão para avaliar a previsão antes que a escalabilidade preditiva comece a modificar ativamente a capacidade.
Pré-requisitos
Para adicionar métricas personalizadas à política de escalação preditiva, você deve ter as permissões cloudwatch:GetMetricData
.
Para especificar suas próprias métricas em vez de usar as métricas que aAWS fornecer, você deve primeiro publicá-las em CloudWatch. Para obter mais informações, consulte Publicação de métricas personalizadas no Guia CloudWatch do usuário da Amazon.
Se publicar suas próprias métricas, certifique-se de publicar os pontos de dados com uma frequência mínima de cinco minutos. O Amazon EC2 Auto Scaling recupera os pontos de dados CloudWatch com base na duração do período necessário. Por exemplo, a especificação da métrica de carga usa métricas por hora para medir a carga em sua aplicação. CloudWatch usa seus dados de métrica publicados para fornecer um único valor de dados para qualquer período de uma hora, agregando todos os pontos de dados com a data/hora que caem dentro de cada período de uma hora.
Estruture o JSON para métricas personalizadas
A seção a seguir contém exemplos de como configurar escalação preditiva para consultar dados CloudWatch. Há dois métodos diferentes de configurar essa opção, e o método escolhido afeta qual será o formato usado para estruturar JSON para a política de escalação preditiva. Quando você usa matemática de métricas, o formato do JSON varia ainda mais com base na matemática de métrica que está sendo aplicada.
-
Para criar uma política que obtenha dados diretamente de outras CloudWatch métricas fornecidas pelaAWS ou das métricas que você publica CloudWatch, consulteExemplo de política de escalação preditiva com métricas personalizadas de carga e de dimensionamento (AWS CLI).
-
Para criar uma política que possa consultar várias CloudWatch métricas e usar expressões matemáticas para criar novas séries temporais de acordo com essas métricas, consulteUsar expressões de matemática métrica.
Exemplo de política de escalação preditiva com métricas personalizadas de carga e de dimensionamento (AWS CLI)
Para criar uma política de escalação preditiva com métricas personalizadas de carga e dimensionamento com a AWS CLI, armazene os argumentos para a --predictive-scaling-configuration
em um arquivo JSON denominado config.json
.
Você começa a adicionar métricas personalizadas substituindo os valores substituíveis no exemplo a seguir por suas métricas e sua meta de utilização.
{ "MetricSpecifications": [ { "TargetValue":
50
, "CustomizedScalingMetricSpecification": { "MetricDataQueries": [ { "MetricStat": { "Metric": { "MetricName": "MyUtilizationMetric
", "Namespace": "MyNameSpace
", "Dimensions": [ { "Name": "MyOptionalMetricDimensionName
", "Value": "MyOptionalMetricDimensionValue
" } ] }, "Stat": "Average
" } } ] }, "CustomizedLoadMetricSpecification": { "MetricDataQueries": [ { "MetricStat": { "Metric": { "MetricName": "MyLoadMetric
", "Namespace": "MyNameSpace
", "Dimensions": [ { "Name": "MyOptionalMetricDimensionName
", "Value": "MyOptionalMetricDimensionValue
" } ] }, "Stat": "Sum
" } } ] } } ] }
Para obter mais informações, consulte MetricDataQuerya Referência da API do Auto Scaling do Amazon EC2.
nota
Veja a seguir alguns recursos adicionais que podem ajudar você a encontrar nomes de métricas, namespaces, dimensões e estatísticas para CloudWatch métricas:
-
Para obter informações sobre as métricas disponíveis paraAWS serviços, consulte AWSserviços que publicam CloudWatch métricas no Guia CloudWatch do usuário da Amazon.
-
Para obter os valores exatos de nome da métrica, namespace e dimensões (se aplicável) para uma CloudWatch métrica comAWS CLI
Para criar essa política, execute o put-scaling-policycomando usando como entrada o arquivo JSON, como demonstrado no exemplo a seguir.
aws autoscaling put-scaling-policy --policy-name
my-predictive-scaling-policy
\ --auto-scaling-group-namemy-asg
--policy-type PredictiveScaling \ --predictive-scaling-configurationfile://config.json
Se bem-sucedido, esse comando gerará o nome do recurso da Amazon (ARN) da política.
{
"PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:2f4f5048-d8a8-4d14-b13a-d1905620f345:autoScalingGroupName/my-asg:policyName/my-predictive-scaling-policy",
"Alarms": []
}
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.
Índice
Noções básicas de matemática métrica
Se tudo o que deseja fazer é agregar dados métricos existentes, a matemática CloudWatch métrica poupa o esforço e o custo de publicar outra métrica em CloudWatch. Você pode usar qualquer métrica que a AWS fornece, e também pode usar métricas definidas como parte de suas aplicações. Por exemplo, talvez você queira calcular a lista de pendências da fila do Amazon SQS 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 Como usar 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 CloudWatch compatível com.
-
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 Como usar 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 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 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. Para obter mais informações, consulte Escalabilidade baseada no 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 métrica ApproximateNumberOfMessagesVisible
do Amazon SQS, que é o número de mensagens disponíveis para recuperação da fila. Ele também usa a métrica GroupInServiceInstances
do Amazon EC2 Auto Scaling e uma expressão matemática para calcular a lista de pendências por instância para a 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 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 Using EC2 Auto Scaling predictive scaling policies with Blue/Green deployments
O exemplo de política a seguir mostra como isso pode ser feito. Neste exemplo, a política usa a métrica CPUUtilization
emitida pelo Amazon EC2. Ela também usa a métrica GroupInServiceInstances
do 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 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": []
}
Considerações e solução de problemas
Se ocorrer um problema ao usar métricas personalizadas, recomendamos fazer o seguinte:
-
Se uma mensagem de erro for fornecida, leia a mensagem e resolva o problema que ela relata, se possível.
-
Se ocorrer um problema quando você estiver tentando usar uma expressão de pesquisa em um cenário de implantação azul/verde, primeiro certifique-se que você entende como criar uma expressão de pesquisa que procure uma correspondência parcial ao invés de uma correspondência exata. Além disso, confira se sua consulta localiza apenas os grupos do Auto Scaling que estão executando a aplicação específica. Para obter mais informações sobre a sintaxe da expressão de CloudWatch pesquisa, consulte a sintaxe da expressão de pesquisa no Guia CloudWatch do usuário da Amazon.
-
Se você não validou uma expressão com antecedência, o put-scaling-policycomando a valida quando você cria sua política de escalabilidade. No entanto, existe a possibilidade de que esse comando não identifique a causa exata dos erros detectados. Para corrigir os problemas, solucione os erros que você recebe em uma resposta de uma solicitação para o get-metric-datacomando. Você também pode solucionar problemas da expressão no CloudWatch console.
-
Quando você visualiza os gráficos de Carga e de Capacidade no console, o gráfico da Capacidade pode não mostrar nenhum dado. Para garantir que os gráficos tenham dados completos, certifique-se de habilitar consistentemente métricas de grupo para seus grupos do Auto Scaling. Para obter mais informações, consulte Ativar métricas do grupo do Auto Scaling (console).
-
A especificação da métrica de capacidade só é útil para implantações azul/verde quando você tem aplicações que são executadas em diferentes grupos do Auto Scaling ao longo de suas vidas úteis. Essa métrica personalizada permite que você forneça a capacidade total de vários grupos do Auto Scaling. A escalabilidade preditiva usa isso para mostrar dados históricos nos gráficos de Capacidade no console.
-
Você deve especificar
false
paraReturnData
seMetricDataQueries
especificar a função SEARCH() (BUSCAR) por conta própria sem uma função matemática como SUM() (SOMA). Isso ocorre porque as expressões de pesquisa podem retornar várias séries temporais, e uma especificação métrica baseado em uma expressão pode retornar apenas uma série temporal. -
Todas as métricas envolvidas em uma expressão de pesquisa devem ter a mesma resolução.
Limitações
-
Você pode consultar pontos de dados de até 10 métricas em uma especificação métrica.
-
Para os propósitos desse limite, uma expressão conta como uma métrica.