Usar o dimensionamento automático preditivo para escala horizontal antes das demandas de carga em conjuntos de dimensionamento de máquinas virtuais
O dimensionamento automático preditivo usa o machine learning para ajudar a gerenciar e escalar conjuntos de dimensionamento de máquinas virtuais do Azure com padrões de carga de trabalho cíclicas. Ele prevê a carga geral da CPU para o conjunto de dimensionamento de máquinas virtuais, com base nos padrões de uso histórico da CPU. Ele prevê a carga geral da CPU observando e aprendendo com o uso histórico. Esse processo garante que o dimensionamento ocorra a tempo de atender à demanda.
O dimensionamento automático preditivo precisa de um mínimo de sete dias de histórico para fornecer previsões. Os resultados mais precisos vêm de 15 dias de dados históricos.
O dimensionamento automático preditivo segue os limites de dimensionamento definidos para o conjunto de dimensionamento de máquinas virtuais. Quando o sistema previr que a carga de percentual de CPU do conjunto de dimensionamento de máquinas virtuais cruzará o limite de expansão, novas instâncias serão adicionadas de acordo com suas especificações. Você também pode configurar o quão longe você deseja que novas instâncias sejam provisionadas, até 1 hora antes do pico de carga de trabalho previsto ocorrer.
A opção Somente previsão permite que você veja a previsão de CPU prevista sem disparar a ação de dimensionamento com base na previsão. Em seguida, você pode comparar a previsão com os padrões de carga de trabalho reais para desenvolver confiança nos modelos de previsão antes de habilitar o recurso de dimensionamento automático preditivo.
Ofertas de dimensionamento automático preditivo
- O dimensionamento automático preditivo é apenas para cargas de trabalho que apresentam padrões de uso de CPU cíclicos.
- O suporte só está disponível para conjuntos de dimensionamento de máquinas virtuais.
- A métrica Percentual de CPU com o tipo de agregação Média é a única métrica com suporte no momento.
- O dimensionamento automático preditivo dá suporte apenas à expansão. Configure o dimensionamento automático padrão para gerenciar a escala em ações.
- O dimensionamento automático preditivo só está disponível para a nuvem comercial do Azure. No momento, não há suporte para nuvens do Microsoft Azure Governamental.
Habilitar o dimensionamento automático preditivo ou o modo somente previsão com o portal do Azure
Acesse a tela do Conjunto de dimensionamento de máquinas virtuais e selecione Escala.
Na seção Dimensionamento automático personalizado, Dimensionamento automático preditivo é exibido.
Usando a seleção suspensa, você pode:
- Desabilitar o dimensionamento automático preditivo. Desabilitar é a seleção padrão quando você acessa pela primeira vez a página de dimensionamento automático preditivo.
- Habilitar o modo somente previsão.
- Habilitar o dimensionamento automático preditivo.
Observação
Para habilitar o dimensionamento automático preditivo ou o modo somente previsão, configure as condições do dimensionamento automático reativo padrão.
Para habilitar o modo somente previsão, selecione-o na lista suspensa. Defina um gatilho de expansão com base na porcentagem da CPU. Em seguida, selecione Salvar. O mesmo processo se aplica para habilitação do dimensionamento automático preditivo. Para desabilitar o dimensionamento automático preditivo ou o modo somente previsão, selecione Desabilitar na lista suspensa.
Se desejado, especifique uma hora de pré-lançamento para que as instâncias estejam totalmente em execução antes de serem necessárias. Você pode pré-inicializar instâncias entre 5 e 60 minutos antes do tempo de previsão necessário.
Depois de habilitar o dimensionamento automático preditivo ou o modo somente previsão e salvá-lo, selecione Gráficos preditivos.
Você verá três gráficos:
- O gráfico superior mostra uma comparação sobreposta entre o percentual total de CPU real e o previsto. O período de tempo do grafo mostrado é dos últimos sete dias até as próximas 24 horas.
- O gráfico do meio mostra o número máximo de instâncias em execução nos últimos 7 dias.
- O gráfico inferior mostra a utilização média da CPU atual nos últimos 7 dias.
Usando um modelo do Azure Resource Manager
Recupere a ID do recurso e o grupo de recursos do conjunto de dimensionamento de máquinas virtuais. Por exemplo: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/patest2/providers/Microsoft.Compute/virtualMachineScaleSets/patest2
Atualize o arquivo autoscale_only_parameters com a ID do recurso do conjunto de dimensionamento de máquinas virtuais e com os parâmetros de configuração de dimensionamento automático.
Use um comando do PowerShell para implantar o modelo que contém as configurações de dimensionamento automático. Por exemplo:
PS G:\works\kusto_onboard\test_arm_template> new-azurermresourcegroupdeployment -name binzAutoScaleDeploy -resourcegroupname cpatest2 -templatefile autoscale_only.json -templateparameterfile autoscale_only_parameters.json
PS C:\works\autoscale\predictive_autoscale\arm_template> new-azurermresourcegroupdeployment -name binzAutoScaleDeploy - resourcegroupname patest2 -templatefile autoscale_only_binz.json -templateparameterfile autoscale_only_parameters_binz.json
DeploymentName : binzAutoScaleDeploy
ResourceGroupName : patest2
ProvisioningState : Succeeded
Timestamp : 3/30/2021 10:11:02 PM
Mode : Incremental
TemplateLink
Parameters :
Name Type Value
================ ============================= ====================
targetVmssResourceld String /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/patest2/providers/Microsoft.Compute/virtualMachineScaleSets/patest2
location String East US
minimumCapacity Int 1
maximumCapacity Int 4
defaultCapacity Int 4
metricThresholdToScaleOut Int 50
metricTimeWindowForScaleOut String PT5M
metricThresholdToScaleln Int 30
metricTimeWindowForScaleln String PT5M
changeCountScaleOut Int 1
changeCountScaleln Int 1
predictiveAutoscaleMode String Enabled
Outputs :
Name Type Value
================ ============================== ====================
targetVmssResourceld String /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/patest2/providers/Microsoft.Compute/virtualMachineScaleSets/patest2
settingLocation String East US
predictiveAutoscaleMode String Enabled
DeloymentDebugLoglevel :
PS C:\works\autoscale\predictive_autoscale\arm_template>
autoscale_only.json
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"targetVmssResourceId": {
"type": "string"
},
"location": {
"type": "string"
},
"minimumCapacity": {
"type": "Int",
"defaultValue": 2,
"metadata": {
"description": "The minimum capacity. Autoscale engine will ensure the instance count is at least this value."
}
},
"maximumCapacity": {
"type": "Int",
"defaultValue": 5,
"metadata": {
"description": "The maximum capacity. Autoscale engine will ensure the instance count is not greater than this value."
}
},
"defaultCapacity": {
"type": "Int",
"defaultValue": 3,
"metadata": {
"description": "The default capacity. Autoscale engine will preventively set the instance count to be this value if it can not find any metric data."
}
},
"metricThresholdToScaleOut": {
"type": "Int",
"defaultValue": 30,
"metadata": {
"description": "The metric upper threshold. If the metric value is above this threshold then autoscale engine will initiate scale out action."
}
},
"metricTimeWindowForScaleOut": {
"type": "string",
"defaultValue": "PT5M",
"metadata": {
"description": "The metric look up time window."
}
},
"metricThresholdToScaleIn": {
"type": "Int",
"defaultValue": 20,
"metadata": {
"description": "The metric lower threshold. If the metric value is below this threshold then autoscale engine will initiate scale in action."
}
},
"metricTimeWindowForScaleIn": {
"type": "string",
"defaultValue": "PT5M",
"metadata": {
"description": "The metric look up time window."
}
},
"changeCountScaleOut": {
"type": "Int",
"defaultValue": 1,
"metadata": {
"description": "The instance count to increase when autoscale engine is initiating scale out action."
}
},
"changeCountScaleIn": {
"type": "Int",
"defaultValue": 1,
"metadata": {
"description": "The instance count to decrease the instance count when autoscale engine is initiating scale in action."
}
},
"predictiveAutoscaleMode": {
"type": "String",
"defaultValue": "ForecastOnly",
"metadata": {
"description": "The predictive Autoscale mode."
}
}
},
"variables": {
},
"resources": [{
"type": "Microsoft.Insights/autoscalesettings",
"name": "cpuPredictiveAutoscale",
"apiVersion": "2022-10-01",
"location": "[parameters('location')]",
"properties": {
"profiles": [{
"name": "DefaultAutoscaleProfile",
"capacity": {
"minimum": "[parameters('minimumCapacity')]",
"maximum": "[parameters('maximumCapacity')]",
"default": "[parameters('defaultCapacity')]"
},
"rules": [{
"metricTrigger": {
"metricName": "Percentage CPU",
"metricNamespace": "",
"metricResourceUri": "[parameters('targetVmssResourceId')]",
"timeGrain": "PT1M",
"statistic": "Average",
"timeWindow": "[parameters('metricTimeWindowForScaleOut')]",
"timeAggregation": "Average",
"operator": "GreaterThan",
"threshold": "[parameters('metricThresholdToScaleOut')]"
},
"scaleAction": {
"direction": "Increase",
"type": "ChangeCount",
"value": "[parameters('changeCountScaleOut')]",
"cooldown": "PT5M"
}
}, {
"metricTrigger": {
"metricName": "Percentage CPU",
"metricNamespace": "",
"metricResourceUri": "[parameters('targetVmssResourceId')]",
"timeGrain": "PT1M",
"statistic": "Average",
"timeWindow": "[parameters('metricTimeWindowForScaleIn')]",
"timeAggregation": "Average",
"operator": "LessThan",
"threshold": "[parameters('metricThresholdToScaleIn')]"
},
"scaleAction": {
"direction": "Decrease",
"type": "ChangeCount",
"value": "[parameters('changeCountScaleOut')]",
"cooldown": "PT5M"
}
}
]
}
],
"enabled": true,
"targetResourceUri": "[parameters('targetVmssResourceId')]",
"predictiveAutoscalePolicy": {
"scaleMode": "[parameters('predictiveAutoscaleMode')]"
}
}
}
],
"outputs": {
"targetVmssResourceId" : {
"type" : "string",
"value" : "[parameters('targetVmssResourceId')]"
},
"settingLocation" : {
"type" : "string",
"value" : "[parameters('location')]"
},
"predictiveAutoscaleMode" : {
"type" : "string",
"value" : "[parameters('predictiveAutoscaleMode')]"
}
}
}
autoscale_only_parameters.json
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"targetVmssResourceId": {
"value": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/patest2/providers/Microsoft.Compute/virtualMachineScaleSets/patest2"
},
"location": {
"value": "East US"
},
"minimumCapacity": {
"value": 1
},
"maximumCapacity": {
"value": 4
},
"defaultCapacity": {
"value": 4
},
"metricThresholdToScaleOut": {
"value": 50
},
"metricTimeWindowForScaleOut": {
"value": "PT5M"
},
"metricThresholdToScaleIn": {
"value": 30
},
"metricTimeWindowForScaleIn": {
"value": "PT5M"
},
"changeCountScaleOut": {
"value": 1
},
"changeCountScaleIn": {
"value": 1
},
"predictiveAutoscaleMode": {
"value": "Enabled"
}
}
}
Para obter mais informações sobre os modelos do Azure Resource Manager, confira Visão geral do modelo do Resource Manager.
Perguntas frequentes
Esta seção responde às perguntas frequentes.
Por que o percentual da CPU é superior a 100% nos gráficos preditivos?
O gráfico preditivo mostra a carga cumulativa para todos os computadores no conjunto de dimensionamento. Se você tiver 5 VMs em um conjunto de dimensionamento, a carga cumulativa máxima para todas as VMs será de 500%, ou seja, cinco vezes a carga máxima de 100% de CPU de cada VM.
O que acontece com o tempo quando você ativa o dimensionamento automático preditivo em um conjunto de dimensionamento de máquinas virtuais?
O dimensionamento automático preditivo usa o histórico de um conjunto de dimensionamento de máquinas virtuais em execução. Se o conjunto de dimensionamento for executado há menos de sete dias, você receberá uma mensagem informando que o modelo está sendo treinado. Para obter mais informações, consulte a mensagem de dados sem previsão. As previsões são aprimoradas com o tempo, e atingem a precisão máxima de 15 dias após a criação do conjunto de dimensionamento de máquinas virtuais.
Se as alterações no padrão de carga de trabalho ocorrerem (mas permanecerem periódicas), o modelo reconhecerá a alteração e começará a ajustar a previsão. A previsão é aprimorada com o tempo. A precisão máxima é atingida 15 dias após a alteração no padrão de tráfego. Lembre-se de que as regras de dimensionamento automático padrão ainda se aplicam. Se um novo aumento não previsto no tráfego ocorrer, o conjunto de dimensionamento de máquinas virtuais ainda será aumentado para atender à demanda.
E se o modelo não estiver funcionando bem para mim?
A modelagem funciona melhor com cargas de trabalho que exibem periodicidade. Recomendamos que você avalie primeiro as previsões habilitando o modo "somente previsão", que vai sobrepor o uso previsto da CPU do conjunto de dimensionamento com o uso real observado. Depois de comparar e avaliar os resultados, você pode optar por habilitar o dimensionamento com base nas métricas previstas se as previsões do modelo estiverem próximas o suficiente do seu cenário.
Por que preciso habilitar o dimensionamento automático padrão antes de habilitar o dimensionamento automático preditivo?
O dimensionamento automático padrão será um fallback necessário se o modelo preditivo não funcionar bem no seu cenário. O dimensionamento automático padrão abordará picos de carga inesperados que não fazem parte do padrão de carga de CPU típico. Ele também fornecerá um fallback se ocorrer um erro na recuperação dos dados preditivos.
Qual regra entrará em vigor se as regras de dimensionamento automático padrão e preditivas forem definidas?
As regras de dimensionamento automático padrão são usadas se houver um pico inesperado na carga da CPU ou ocorrer um erro ao recuperar dados preditivos
Usamos o limite definido nas regras de dimensionamento automático padrão para entender quando você deseja escalar horizontalmente e por quantas instâncias. Se você quiser que seu Conjunto de Dimensionamento de Máquinas Virtuais seja expandido quando o uso da CPU exceder 70% e os dados reais ou previstos mostrarem que o uso da CPU é ou será superior a 70%, ocorrerá uma expansão.
Erros e avisos
Esta seção aborda erros e avisos comuns.
O dimensionamento automático padrão não foi habilitado
Você vê a seguinte mensagem de erro:
Para habilitar o dimensionamento automático preditivo, crie uma regra de escala horizontal com base na métrica 'Porcentagem da CPU'. Clique aqui para ir para a guia 'Configurar' para definir uma regra de dimensionamento automático.
Essa mensagem significa que você tentou habilitar o dimensionamento automático preditivo antes de habilitar o dimensionamento automático padrão e configurou-o para usar a métrica Percentual de CPU com o tipo de agregação Média.
Sem dados preditivos
Você não verá nenhum dado nos gráficos preditivos em determinadas condições. Esse comportamento não é um erro; é o comportamento pretendido.
Quando o dimensionamento automático preditivo está desabilitado, você recebe uma mensagem que começa com "Não há dados para exibição…" Você, então, vê instruções sobre o que habilitar para que você possa ver um gráfico preditivo.
Ao criar um conjunto de dimensionamento de máquinas virtuais e habilitar o modo somente previsão, você receberá a mensagem "Os dados preditivos estão sendo treinados…" e um tempo de retorno para visualização do gráfico.
Próximas etapas
Para saber mais sobre o dimensionamento automático, consulte os seguintes artigos:
- Visão geral do dimensionamento automático
- Métricas comuns de dimensionamento automático do Azure Monitor
- Práticas recomendadas para dimensionamento automático do Azure Monitor
- Usar ações de dimensionamento automático para enviar notificações de alerta por email e webhook
- API REST do Dimensionamento Automático