Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il motore di ottimizzazione di Azure (AOE) è un set di runbook di Automazione di Azure che raccolgono, inseriscono e analizzano i dati sull'utilizzo e sulle prestazioni di Azure per offrire suggerimenti per ottimizzare i costi. Il motore è progettato per essere flessibile e personalizzabile, consentendo di adattarne il comportamento in base alle esigenze dell'organizzazione. Questo articolo fornisce indicazioni su come personalizzare le impostazioni del motore. Includono la regolazione delle soglie, la modifica dei programmi e l'espansione delle funzionalità del motore.
Ampliare l'ambito del motore
Per impostazione predefinita, il ruolo Lettore viene assegnato solo all'identità gestita di Azure Automation sulla rispettiva sottoscrizione. Tuttavia, è possibile ampliare l'ambito delle raccomandazioni concedendo lo stesso ruolo lettore ad altre sottoscrizioni o, ancora più semplice, a un Gruppo di Gestione di livello superiore.
Nel contesto delle raccomandazioni relative alle dimensioni corrette delle macchine virtuali ottimizzate, è possibile che le macchine virtuali siano collegate a più aree di lavoro. Se è necessario includere altre aree di lavoro, oltre a quella principale usata da AOE, nell'ambito delle raccomandazioni è sufficiente aggiungere gli ID dell'area di lavoro alla AzureOptimization_RightSizeAdditionalPerfWorkspaces
variabile (vedere altri dettagli in Configurazione delle aree di lavoro).
Se sono presenti più directory ID Entra (note anche come tenant), è possibile estendere la copertura di AOE a un tenant diverso da quello in cui è stato distribuito. A tale scopo, sono disponibili due opzioni, ognuna con i relativi vantaggi e svantaggi:
Principale del servizio nel tenant secondario | Distribuzione di Azure Lighthouse |
---|---|
Fornisce la copertura delle funzionalità più ampia (vedere le limitazioni seguenti) | Fornisce una copertura delle funzionalità quasi completa (vedere le limitazioni seguenti) |
Usa un'opzione di autenticazione meno sicura e non gestita, in base ai segreti | Fornisce un'autenticazione affidabile, riutilizzando l'identità gestita del motore |
Non supporta il riutilizzo delle metriche di performance dalle aree di lavoro di Log Analytics nel tenant secondario, quando si migliorano le raccomandazioni di dimensionamento corretto per le macchine virtuali. | Non include il supporto per gli oggetti Microsoft Entra, che influisce sulla completezza della cartella di lavoro Identità e ruoli e sulle raccomandazioni correlate all'ID di Microsoft Entra. La scheda Panoramica della cartella di lavoro di Conformità criteri non recupera i dati dal tenant secondario; è supportata solo l'analisi dettagliata dei criteri. |
L'implementazione si basa sull'esecuzione di uno script di PowerShell helper | L'implementazione si basa sulla distribuzione di un modello di Azure Resource Manager |
Copertura più scalabile del tenant secondario, semplicemente concedendo autorizzazioni al principale del servizio in un ambito di livello superiore | La distribuzione viene eseguita per ogni sottoscrizione nel tenant secondario; è necessario utilizzare i criteri di Azure per la scalabilità. |
Meno conveniente, perché le pianificazioni dei processi vengono duplicate per il tenant secondario | Più economico, poiché gli orari di lavoro esistenti copriranno automaticamente il tenant secondario |
Multi-tenant con principale del servizio nel tenant secondario
Per ampliare l'ambito del motore usando l'approccio basato sull'entità servizio, è necessario verificare i prerequisiti seguenti:
- Creare un principale di servizio (registrazione app) e un segreto nel tenant secondario.
- Concedere le autorizzazioni necessarie all'entità servizio nel tenant secondario, ovvero Lettore in sottoscrizioni/gruppi di gestione di Azure e Lettore Globale in Microsoft Entra ID.
- Creare una credenziale di Automazione nell'account di automazione di AOE. Impostare l'ID client dell'entità del servizio come nome utente e la chiave segreta come password.
- Esegui lo
Register-MultitenantAutomationSchedules.ps1
script (disponibile nella cartella radice AOE) nell'ambito dell'abbonamento in cui è stato distribuito AOE. Questo script crea nuove pianificazioni dei processi per ognuno dei runbook di esportazione e li configura per eseguire query sul tenant secondario. È sufficiente chiamare lo script usando la sintassi seguente:
./Register-MultitenantAutomationSchedules.ps1 -AutomationAccountName <AOE automation account> -ResourceGroupName <AOE resource group> -TargetSchedulesSuffix <suffix to append to every new job schedules, e.g., Tenant2> -TargetTenantId <secondary tenant GUID> -TargetTenantCredentialName <name of the Automation credential created in the previous step> [-TargetSchedulesOffsetMinutes <offset in minutes relative to original schedules, defaults to 0>] [-TargetAzureEnvironment <AzureUSGovernment|AzureGermanCloud|AzureCloud>] [-ExcludedRunbooks <An array of runbook names to exclude from the process>] [-IncludedRunbooks <An array of runbook names to include in the process>]
Multitenant con Azure Lighthouse
Per ampliare l'ambito del motore usando l'approccio basato su Azure Lighthouse, è necessario verificare i prerequisiti seguenti:
- Preparare il modello di Azure Resource Manager da distribuire nel tenant secondario. È possibile riutilizzare as-is modello di riferimento nel repository (
lighthouse-template.json
file disponibile nella cartella radice AOE). - Se si distribuisce il modello per una singola sottoscrizione, è sufficiente seguire i passaggi descritti qui, usando il modello di riferimento precedente e specificando i valori dei parametri del modello (come file di parametri separati o direttamente nell'interfaccia del portale di Azure).
- Se è necessario eseguire la distribuzione su larga scala in più sottoscrizioni, è possibile usare Criteri di Azure seguendo le istruzioni disponibili qui e modificando il codice di definizione dei criteri per seguire il modello di riferimento precedente.
- Indipendentemente dall'approccio alla distribuzione, i parametri del modello da fornire sono i seguenti:
-
managedByTenantId
- ID del tenant di Microsoft Entra in cui è stato distribuito AOE. -
principalId
- ID oggetto di Microsoft Entra per l'identità gestita dal sistema dell'account di automazione AOE. -
principalIdDisplayName
- Nome dell'account di automazione AOE.
-
Regolare le pianificazioni
Per impostazione predefinita, il tempo di base per le pianificazioni di Automazione AOE viene impostato come ora di distribuzione. Subito dopo il completamento della distribuzione iniziale, i runbook di esportazione, inserimento e raccomandazione vengono eseguiti secondo le pianificazioni predefinite del motore. Ad esempio, se si distribuisce AOE il lunedì alle 11:00, si ottengono nuove raccomandazioni ogni lunedì alle 2:30. Se questa pianificazione, per qualche motivo, non soddisfa le proprie esigenze, è possibile reimpostarla al momento più adatto, usando lo Reset-AutomationSchedules.ps1
script (disponibile nella cartella radice AOE). È sufficiente chiamare lo script seguente. Seguire la sintassi e rispondere alle richieste di input:
./Reset-AutomationSchedules.ps1 -AutomationAccountName <AOE automation account> -ResourceGroupName <AOE resource group> [-AzureEnvironment <AzureUSGovernment|AzureGermanCloud|AzureCloud>]
L'ora di base scelta deve essere in formato UTC e deve essere definita in base al giorno della settimana e dell'ora in cui si desidera generare raccomandazioni. È necessario dedurre 3 ore e 30 minuti dall'orario scelto. Perché l'orario di base definisce le pianificazioni per tutti i runbook di automazione dipendenti che devono essere eseguiti prima che vengano generate le raccomandazioni. Si supponga, ad esempio, di voler generare raccomandazioni ogni lunedì alle ore 8h30; l'ora di base è la data del calendario successiva che cade il lunedì, alle 5h00 AM. Il formato della data scelta deve essere AAAA-MM-gg HH:mm:ss, ad esempio . 2022-01-03 05:00:00
Lo script chiede anche di immettere, se necessario, il gruppo di ruoli di lavoro ibridi in cui si vuole che i runbook vengano eseguiti (vedere la sottosezione successiva).
Scalare i runbook AOE con il Lavoratore Ibrido
Per impostazione predefinita, i runbook di automazione AOE vengono eseguiti nel contesto della sandbox Automazione di Azure. Potrebbero verificarsi problemi di prestazioni dovuti ai limiti di memoria della sandbox di Automazione. In alternativa, è possibile decidere di implementare endpoint privati per l'account di archiviazione o database SQL per rafforzare la sicurezza di AOE. In entrambi i casi, è necessario eseguire runbook da un Lavoratore Ibrido. Si tratta di una macchina virtuale di Azure o locale con l'estensione Automation Hybrid Worker. Per modificare il contesto di esecuzione per i runbook AOE, è necessario usare lo Reset-AutomationSchedules.ps1
script. Vedere come usare lo script nella sottosezione precedente. Dopo aver impostato il tempo di base per l'esecuzione dei runbook, immettere il nome del Gruppo di Lavoratori Ibridi in cui eseguire i runbook.
Importante
- Nel computer del ruolo di lavoro ibrido devono essere installati i moduli di PowerShell necessari. Il
upgrade-manifest.json
file contiene l'elenco dei moduli necessari. - Dopo aver modificato il contesto di esecuzione del runbook in Ruolo di lavoro ibrido, è necessario usare sempre il
DoPartialUpgrade
flag ogni volta che si aggiorna AOE oppure si perdono le impostazioni di pianificazione del runbook e si ripristina la configurazione sandbox predefinita. - L'identità gestita usata per l'autenticazione negli ambiti di applicazione Azure, Microsoft Entra ID e Account di fatturazione è ancora quella utilizzata da Azure Automation. Viene usata anche se alla macchina dell'Hybrid Worker è assegnata un'identità gestita (vedere i dettagli). Le identità gestite assegnate dall'utente sono supportate nel contesto dei ruoli di lavoro ibridi solo se:
- L'Automation Account non ha alcuna identità gestita associata; cioè, solo la macchina Hybrid Worker può avere un'identità gestita assegnata dall'utente.
- Tutti i runbook vengono eseguiti nel contesto dell'Hybrid Worker. In questo caso, è necessario creare una
AzureOptimization_UAMIClientID
variabile di automazione con l'ID client dell'identità gestita assegnata dall'utente come valore. - Il valore della
AzureOptimization_AuthenticationOption
variabile di automazione viene aggiornato aUserAssignedManagedIdentity
.
Regolare le soglie
Per le raccomandazioni sui costi di Advisor, la configurazione predefinita di AOE produce aggregazioni delle metriche delle VM al 99° percentile, ma è possibile modificarle in modo che siano meno conservative. Esistono anche soglie di metriche regolabili usate per calcolare il punteggio di adattamento. I valori di soglia predefiniti sono il 30% per la CPU (5% per le raccomandazioni di arresto), il 50% per la memoria (100% per l'arresto) e 750 Mbps per la larghezza di banda di rete (10 Mbps per l'arresto). Tutte le configurazioni regolabili sono disponibili come variabili di Automazione di Azure. Le informazioni nella tabella successiva evidenziano le variabili di configurazione più rilevanti. Per accedervi, passare all'opzione di menu dell'account di Automazione Risorse condivise - Variabili.
Variabile | Descrizione |
---|---|
AzureOptimization_AdvisorFilter |
Se non sei interessato a ricevere raccomandazioni per tutti i pilastri non-Cost Advisor, puoi specificare un filtro a livello di pillar (elenco delimitato da virgole con almeno uno dei valori seguenti: HighAvailability,Security,Performance,OperationalExcellence ). L'impostazione predefinita è tutti i pilastri. |
AzureOptimization_AuthenticationOption |
Il metodo di autenticazione predefinito per i runbook di automazione è RunAsAccount . È tuttavia possibile passare a ManagedIdentity se si usa un ruolo di lavoro ibrido in una macchina virtuale di Azure. |
AzureOptimization_ConsumptionOffsetDays |
Il runbook di raccolta dati a consumo di Azure esegue una query ogni giorno per individuare gli eventi di fatturazione che si sono verificati sette giorni fa (impostazione predefinita). È possibile passare a un offset più vicino, ma tenere presente che alcuni tipi di sottoscrizione (ad esempio, MSDN) non supportano un valore inferiore. |
AzureOptimization_PerfPercentileCpu |
Il percentile predefinito per le aggregazioni delle metriche della CPU è 99. Man mano che il percentile diminuisce, l'algoritmo del punteggio di adattamento delle dimensioni corrette della macchina virtuale viene modificato in modo meno conservativo. |
AzureOptimization_PerfPercentileDisk |
Il percentile predefinito per le aggregazioni delle metriche di I/O/o velocità effettiva del disco è 99. Man mano che il percentile diminuisce, l'algoritmo del punteggio di adattamento delle dimensioni corrette della macchina virtuale viene modificato in modo meno conservativo. |
AzureOptimization_PerfPercentileMemory |
Il percentile predefinito per le aggregazioni delle metriche di memoria è 99. Man mano che il percentile diminuisce, l'algoritmo del punteggio di adattamento delle dimensioni corrette della macchina virtuale viene modificato in modo meno conservativo. |
AzureOptimization_PerfPercentileNetwork |
Il percentile predefinito per le aggregazioni delle metriche di rete è 99. Man mano che il percentile diminuisce, l'algoritmo del punteggio di adattamento delle dimensioni corrette della macchina virtuale viene modificato in modo meno conservativo. |
AzureOptimization_PerfPercentileSqlDtu |
Percentile predefinito da usare per le metriche DTU del database SQL. Con l'abbassamento del percentile, l'algoritmo di dimensionamento corretto del database SQL si adegua in modo meno conservativo. |
AzureOptimization_PerfThresholdCpuPercentage |
Soglia CPU (in % tempo processore). Sopra di esso, il punteggio di adeguatezza dimensionale della macchina virtuale diminuisce. Di seguito sono riportati i trigger di raccomandazione dei costi per il set di scalabilità di macchine virtuali di Azure (set di scalabilità) dimensionato correttamente. |
AzureOptimization_PerfThresholdCpuShutdownPercentage |
Soglia CPU (in % tempo processore). Oltre a questo, il punteggio di correttezza delle dimensioni della macchina virtuale diminuisce (solo raccomandazioni di arresto). |
AzureOptimization_PerfThresholdCpuDegradedMaxPercentage |
Soglia CPU (valore massimo osservato in % tempo processore). Sopra di esso, i trigger di raccomandazione delle prestazioni per un dimensionamento corretto del set di scalabilità vengono attivati. |
AzureOptimization_PerfThresholdCpuDegradedAvgPercentage |
Soglia CPU (media osservata in % tempo processore). Sopra di esso, i trigger di raccomandazione delle prestazioni per un dimensionamento corretto del set di scalabilità vengono attivati. |
AzureOptimization_PerfThresholdMemoryPercentage |
Soglia di memoria (in % memoria utilizzata). Al di sopra di esso, il punteggio di adattamento delle dimensioni corrette della macchina virtuale diminuisce. Sotto di esso, vengono attivati i consigli sui trigger per le giuste dimensioni del set di scalabilità per i costi. |
AzureOptimization_PerfThresholdMemoryShutdownPercentage |
Soglia di memoria (in % memoria utilizzata). Oltre a questo, il punteggio di correttezza delle dimensioni della macchina virtuale diminuisce (solo raccomandazioni di arresto). |
AzureOptimization_PerfThresholdMemoryDegradedPercentage |
Soglia di memoria (in % memoria utilizzata). Sopra di esso, i trigger di raccomandazione delle prestazioni per un dimensionamento corretto del set di scalabilità vengono attivati. |
AzureOptimization_PerfThresholdNetworkMbps |
Soglia di rete (in Total Mbps). Al di sopra di esso, il punteggio di adattamento delle dimensioni corrette della macchina virtuale diminuisce. |
AzureOptimization_PerfThresholdNetworkShutdownMbps |
Soglia di rete (in Total Mbps). Oltre a questo, il punteggio di correttezza delle dimensioni della macchina virtuale diminuisce (solo raccomandazioni di arresto). |
AzureOptimization_PerfThresholdDtuPercentage |
Soglia percentuale di utilizzo DTU. Di seguito, un'istanza di database SQL viene considerata sottoutilizzata. |
AzureOptimization_RecommendAdvisorPeriodInDays |
Intervallo in giorni per cercare le raccomandazioni di Advisor nel repository di Log Analytics: il valore predefinito è 7, perché le raccomandazioni di Advisor vengono raccolte una volta alla settimana. |
AzureOptimization_RecommendationAADMaxCredValidityYears |
Il numero massimo di anni per la validità delle credenziali o dei certificati dell'entità servizio: qualsiasi validità superiore a questo intervallo genera una raccomandazione di sicurezza. Il valore predefinito è 2. |
AzureOptimization_RecommendationAADMinCredValidityDays |
Numero minimo di giorni per cui una credenziale o un certificato di un principale del servizio deve essere valido prima della scadenza. Qualsiasi validità al di sotto di questo intervallo genera una raccomandazione di Eccellenza Operativa. Il valore predefinito è 30. |
AzureOptimization_RecommendationLongDeallocatedVmsIntervalDays |
Numero di giorni consecutivi in cui una macchina virtuale è stata deallocata prima di essere raccomandata per l'eliminazione (la macchina virtuale è stata deallocata per lungo tempo con i dischi che continuano a sostenere costi). Il valore predefinito è 30. |
AzureOptimization_RecommendationVNetSubnetMaxUsedPercentageThreshold |
Percentuale massima tollerata per l'utilizzo dello spazio IP della subnet. Il valore predefinito è 80. |
AzureOptimization_RecommendationVNetSubnetMinUsedPercentageThreshold |
Percentuale minima per l'utilizzo dello spazio IP della subnet: qualsiasi utilizzo al di sotto di questo valore contrassegna la rispettiva subnet come utilizzo ridotto dello spazio IP. Il valore predefinito è 5. |
AzureOptimization_RecommendationVNetSubnetEmptyMinAgeInDays |
Età minima in giorni per contrassegnare una subnet vuota, evitando così di contrassegnare le subnet appena create. Il valore predefinito è 30. |
AzureOptimization_RecommendationVNetSubnetUsedPercentageExclusions |
Elenco delimitato da virgole e racchiuso tra virgolette singole dei nomi delle subnet che devono essere esclusi dalle raccomandazioni relative alla percentuale di utilizzo delle subnet, ad esempio 'gatewaysubnet' , 'azurebastionsubnet' . Il valore predefinito è 'gatewaysubnet' . |
AzureOptimization_RecommendationRBACAssignmentsPercentageThreshold |
La percentuale massima di assegnazioni RBAC limita l'utilizzo. Il valore predefinito è 80. |
AzureOptimization_RecommendationResourceGroupsPerSubPercentageThreshold |
Il numero massimo di gruppi di risorse per sottoscrizione limita l'utilizzo. Il valore predefinito è 80. |
AzureOptimization_RecommendationRBACSubscriptionsAssignmentsLimit |
Limite massimo per le assegnazioni RBAC (controllo degli accessi in base al ruolo) per ogni sottoscrizione. L'impostazione attuale è 2000 (come documentato). |
AzureOptimization_RecommendationRBACMgmtGroupsAssignmentsLimit |
Il limite massimo per le assegnazioni RBAC per gruppo di gestione. Attualmente impostato su 500 (come documentato). |
AzureOptimization_RecommendationResourceGroupsPerSubLimit |
Limite massimo per il numero di gruppi di risorse per ogni sottoscrizione. Attualmente impostato su 980 (come riportato). |
AzureOptimization_RecommendationStorageAcountGrowthThresholdPercentage |
Percentuale di crescita minima necessario dell'account di archiviazione per contrassegnare l'archiviazione in cui non sono presenti criteri di conservazione. |
AzureOptimization_RecommendationStorageAcountGrowthMonthlyCostThreshold |
Il costo mensile minimo (nella valuta EA/MCA) necessario per segnalare che l'archiviazione non ha una politica di conservazione attiva. |
AzureOptimization_RecommendationStorageAcountGrowthLookbackDays |
Periodo di retrospettiva (in giorni) per l'analisi della crescita dell'Account di Archiviazione. |
AzureOptimization_ReferenceRegion |
L'area di Azure usata come riferimento per ottenere l'elenco degli SKU disponibili (per impostazione predefinita è westeurope ). |
AzureOptimization_RemediateRightSizeMinFitScore |
Il punteggio minimo di adattamento che una raccomandazione di dimensionamento ideale di una macchina virtuale deve avere per consentire la correzione. |
AzureOptimization_RemediateRightSizeMinWeeksInARow |
Il numero minimo di settimane consecutive durante le quali una raccomandazione sulle dimensioni corrette della VM deve essere completa perché la correzione abbia luogo. |
AzureOptimization_RemediateRightSizeTagsFilter |
Le coppie nome/valore del tag devono avere una raccomandazione relativa alle dimensioni corrette della macchina virtuale affinché si verifichi la correzione. Esempio: [ { "tagName": "a", "tagValue": "b" }, { "tagName": "c", "tagValue": "d" } ] |
AzureOptimization_RemediateLongDeallocatedVMsMinFitScore |
Il punteggio minimo di adattamento che una raccomandazione per le macchine virtuali deallocate lunghe deve avere affinché si verifichi la correzione. |
AzureOptimization_RemediateLongDeallocatedVMsMinWeeksInARow |
Il numero minimo di settimane di seguito in cui deve essere completa una raccomandazione per una VM deallocata a lungo affinché l'intervento di correzione possa avvenire. |
AzureOptimization_RemediateLongDeallocatedVMsTagsFilter |
Le coppie nome/valore del tag devono avere una raccomandazione di macchina virtuale deallocata lunga affinché si verifichi la correzione. Esempio: [ { "tagName": "a", "tagValue": "b" }, { "tagName": "c", "tagValue": "d" } ] |
AzureOptimization_RemediateUnattachedDisksMinFitScore |
Il punteggio minimo di adattamento che una raccomandazione per un disco scollegato deve avere affinché si proceda con la correzione. |
AzureOptimization_RemediateUnattachedDisksMinWeeksInARow |
Il numero minimo di settimane consecutive in cui una raccomandazione per disco non collegato deve essere completata affinché si verifichi il correttivo. |
AzureOptimization_RemediateUnattachedDisksAction |
Azione da eseguire per una correzione della raccomandazione per disco scollegato (Delete o Downsize ). |
AzureOptimization_RemediateUnattachedDisksTagsFilter |
Le coppie di nome/valore del tag che una raccomandazione per un disco non collegato deve avere affinché avvenga la remediazione. Esempio: [ { "tagName": "a", "tagValue": "b" }, { "tagName": "c", "tagValue": "d" } ] |
AzureOptimization_RightSizeAdditionalPerfWorkspaces |
Elenco delimitato da virgole di altri ID dell'area di lavoro Log Analytics in cui cercare le metriche delle macchine virtuali (vedere Configurazione delle aree di lavoro). |
AzureOptimization_PerfThresholdDiskIOPSPercentage |
Soglia percentuale di utilizzo delle operazioni di I/O al secondo del disco. Di seguito, i trigger consigliati per i dischi SSD Premium sottoutilizzati. |
AzureOptimization_PerfThresholdDiskMBsPercentage |
Soglia percentuale di utilizzo della velocità effettiva del disco. Di seguito, i trigger consigliati per i dischi SSD Premium sottoutilizzati. |
AzureOptimization_RecommendationsMaxAgeInDays |
Validità massima (in giorni) per una raccomandazione da mantenere nel database SQL. Impostazione predefinita: 365. |
AzureOptimization_RetailPricesCurrencyCode |
Il codice di valuta (ad esempio, EUR, USD e così via) usato per raccogliere i prezzi al dettaglio delle prenotazioni. |
AzureOptimization_PriceSheetMeterCategories |
Le categorie di contatori separate da virgole utilizzate per il filtro del foglio dei prezzi, per evitare l'inserimento di dati non necessari. Il valore predefinito è "Virtual Machines,Storage" . |
AzureOptimization_ConsumptionScope |
L'ambito delle esportazioni di consumo: Subscription (impostazione predefinita), BillingProfile (solo per il Contratto del Cliente Microsoft) o BillingAccount (per il Contratto del Cliente Microsoft, richiede l'aggiunta del ruolo di Lettore dell'Account di Fatturazione all'identità gestita AOE). Visualizzare altri dettagli. |
Contenuto correlato
Prodotti correlati:
Soluzioni correlate: