Condividi tramite


Personalizzare il motore di ottimizzazione di Azure

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 a UserAssignedManagedIdentity.

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.

Prodotti correlati:

Soluzioni correlate: