Use o dimensionamento automático preditivo para dimensionar antes das demandas de carga em conjuntos de dimensionamento de máquinas virtuais
O dimensionamento automático preditivo usa aprendizado de máquina para ajudar a gerenciar e dimensionar os Conjuntos de Dimensionamento de Máquina Virtual do Azure com padrões cíclicos de carga de trabalho. Ele prevê a carga geral da CPU para o conjunto de dimensionamento da máquina virtual, com base nos padrões históricos de uso da CPU. Ele prevê a carga geral da CPU observando e aprendendo com o uso histórico. Esse processo garante que o escalonamento ocorra a tempo de atender à demanda.
A escala automática preditiva precisa de um mínimo de sete dias de histórico para fornecer previsões. O período máximo de amostragem é uma janela móvel de 15 dias, o que proporciona os melhores resultados preditivos. Para padrões de carga de trabalho mensais ou anuais, use o dimensionamento automático baseado em programação ou configurações de dimensionamento automático baseadas em métricas.
O dimensionamento automático preditivo adere aos limites de dimensionamento definidos para o conjunto de dimensionamento da máquina virtual. Quando o sistema prevê que a porcentagem de carga da CPU do conjunto de dimensionamento da máquina virtual ultrapassará o limite de expansão, novas instâncias serão adicionadas de acordo com suas especificações. Você também pode configurar com quanto tempo de antecedência deseja que novas instâncias sejam provisionadas, até 1 hora antes do pico de carga de trabalho previsto ocorrer.
A previsão só permite que você visualize a previsão da CPU sem acionar a ação de dimensionamento com base na previsão. Em seguida, você pode comparar a previsão com seus padrões de carga de trabalho reais para criar 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 destina-se a cargas de trabalho que apresentam padrões cíclicos de utilização da CPU.
- O suporte só está disponível para conjuntos de dimensionamento de máquinas virtuais.
- A métrica Porcentagem de CPU com o tipo de agregação Média é a única métrica atualmente suportada.
- O dimensionamento automático preditivo suporta apenas expansão. Configure o dimensionamento automático padrão para gerenciar o dimensionamento em ações.
- O dimensionamento automático preditivo só está disponível para a nuvem comercial do Azure. As nuvens do Azure Government não são suportadas no momento.
Habilite o dimensionamento automático preditivo ou a previsão somente com o portal do Azure
Vá para a tela Conjunto de dimensionamento de máquina virtual e selecione Dimensionamento.
Na seção Escala automática personalizada, Dimensionamento automático preditivo é exibido.
Usando a seleção suspensa, você pode:
- Desative o dimensionamento automático preditivo. Desativar é a seleção padrão quando você acessa a página pela primeira vez para dimensionamento automático preditivo.
- Habilite o modo somente previsão.
- Habilite o dimensionamento automático preditivo.
Nota
Antes de habilitar o dimensionamento automático preditivo ou o modo somente previsão, você deve configurar as condições padrão de dimensionamento automático reativo.
Para ativar o modo somente previsão, selecione-o na lista suspensa. Defina um gatilho de expansão com base em Porcentagem de CPU. Em seguida, selecione Guardar. O mesmo processo se aplica para habilitar o dimensionamento automático preditivo. Para desativar o dimensionamento automático preditivo ou o modo somente de previsão, selecione Desativar na lista suspensa.
Se desejar, especifique um tempo de pré-lançamento para que as instâncias estejam totalmente em execução antes de serem necessárias. Você pode pré-iniciar instâncias entre 5 e 60 minutos antes do tempo de previsão necessário.
Depois de ativar o dimensionamento automático preditivo ou o modo somente previsão e salvá-lo, selecione Gráficos preditivos.
Você vê três gráficos:
- O gráfico superior mostra uma comparação sobreposta da porcentagem de CPU real versus total prevista. O período de tempo do gráfico 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 sete dias.
- O gráfico inferior mostra a utilização média atual da CPU nos últimos sete dias.
Habilitar usando um modelo do Azure Resource Manager
Recupere o conjunto de escala da máquina virtual, a ID do recurso e o grupo de recursos do conjunto de dimensionamento da máquina virtual. Por exemplo: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/patest2/providers/Microsoft.Compute/virtualMachineScaleSets/patest2
Atualize o arquivo autoscale_only_parameters com o ID do recurso do conjunto de escala da máquina virtual e todos 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 modelos do Azure Resource Manager, consulte Visão geral do modelo do Resource Manager.
Perguntas mais frequentes
Esta secção responde a perguntas frequentes.
Por que a porcentagem de CPU é superior a 100% em gráficos preditivos?
O gráfico preditivo mostra a carga cumulativa para todas as máquinas no conjunto de escalas. Se você tiver 5 VMs em um conjunto de escala, a carga cumulativa máxima para todas as VMs será de 500%, ou seja, cinco vezes a carga máxima de CPU de 100% de cada VM.
O que acontece ao longo do tempo quando você ativa o dimensionamento automático preditivo para um conjunto de dimensionamento de máquina virtual?
A escala automática de previsão usa o histórico de um conjunto de dimensionamento de máquina virtual em execução. Se o conjunto de balanças estiver funcionando há menos de sete dias, você receberá uma mensagem informando que o modelo está sendo treinado. Para obter mais informações, consulte a mensagem sem dados preditivos. As previsões melhoram com o passar do tempo e atingem a precisão máxima 15 dias após a criação do conjunto de dimensionamento da máquina virtual.
Se ocorrerem alterações no padrão de carga de trabalho, mas permanecerem periódicas, o modelo reconhece a alteração e começa a ajustar a previsão. A previsão melhora com o passar do tempo. A precisão máxima é atingida 15 dias após a mudança no padrão de tráfego acontecer. Lembre-se de que suas regras padrão de dimensionamento automático ainda se aplicam. Se ocorrer um novo aumento imprevisto no tráfego, o conjunto de dimensionamento da máquina virtual ainda será dimensionado para atender à demanda.
E se o modelo não estiver a funcionar bem para mim?
A modelagem funciona melhor com cargas de trabalho que exibem periodicidade. Recomendamos que você primeiro avalie as previsões ativando "somente previsão", que sobreporá o uso previsto da CPU do conjunto de escala 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 para o 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 é um fallback necessário se o modelo preditivo não funcionar bem para o seu cenário. A escala automática padrão cobrirá picos de carga inesperados, que não fazem parte do seu padrão de carga de CPU típico. Ele também fornece um fallback se ocorrer um erro na recuperação dos dados preditivos.
Qual regra entra em vigor se as regras preditivas e de dimensionamento automático padrão forem definidas?
As regras de dimensionamento automático padrão são usadas se houver um pico inesperado na carga da CPU ou se ocorrer um erro ao recuperar dados preditivos
Usamos o limite definido nas regras de dimensionamento automático padrão para entender quando você deseja expandir e por quantas instâncias. Se você quiser que seu Conjunto de Dimensionamento de Máquina Virtual seja dimensionado 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.
Não habilitou o dimensionamento automático padrão
Recebe a seguinte mensagem de erro:
Para habilitar o dimensionamento automático preditivo, crie uma regra de expansão com base na métrica 'Porcentagem de 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 configurá-lo para usar a métrica Porcentagem de CPU com o tipo de agregação média .
Sem dados preditivos
Você não verá dados nos gráficos preditivos sob determinadas condições. Esse comportamento não é um erro, é o comportamento pretendido.
Quando a escala automática preditiva está desativada, você recebe uma mensagem que começa com "Nenhum dado a ser mostrado..." Em seguida, você verá instruções sobre o que habilitar para que possa ver um gráfico preditivo.
Quando você cria pela primeira vez um conjunto de dimensionamento de máquina virtual e habilita o modo somente previsão, recebe a mensagem "Os dados preditivos estão sendo treinados..." e um tempo para voltar para ver o gráfico.
Próximos passos
Saiba mais sobre o dimensionamento automático nos seguintes artigos:
- Descrição geral do dimensionamento automático
- Métricas comuns do Azure Monitor de dimensionamento automático
- Melhores práticas para o dimensionamento automático do Azure Monitor
- Use ações de dimensionamento automático para enviar notificações de alerta por e-mail e webhook
- API REST de dimensionamento automático