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.
Questo articolo descrive una raccolta di procedure FinOps comprovate per i servizi di calcolo. Fornisce indicazioni sull'ottimizzazione dei costi, sul miglioramento dell'efficienza e sull'acquisizione di informazioni dettagliate sulle risorse di calcolo in Azure. Le procedure vengono classificate in base al tipo di servizio di calcolo, ad esempio macchine virtuali (VM), Servizio Azure Kubernetes (AKS) e Funzioni di Azure.
Servizio Azure Kubernetes
Servizio Azure Kubernetes (AKS) semplifica la distribuzione e la gestione delle applicazioni in contenitori. Offre Kubernetes serverless, un'esperienza CI/CD integrata e sicurezza e governance di livello aziendale.
Risorse correlate:
- servizio Azure Kubernetes pagina del prodotto
- Prezzi di servizio Azure Kubernetes
- Documentazione del servizio Azure Kubernetes
- Architettura di base del servizio Azure Kubernetes
Richiesta: dettagli del cluster AKS
Questa query ARG recupera informazioni dettagliate sui cluster del servizio Azure Kubernetes (AKS) nell'ambiente Azure.
Categoria
Gestione delle risorse
Quesito
resources
| where type == "microsoft.containerservice/managedclusters"
| extend AgentPoolProfiles = properties.agentPoolProfiles
| mvexpand AgentPoolProfiles
| project
id,
ProfileName = tostring(AgentPoolProfiles.name),
Sku = tostring(sku.name),
Tier = tostring(sku.tier),
mode = AgentPoolProfiles.mode,
AutoScaleEnabled = AgentPoolProfiles.enableAutoScaling,
SpotVM = AgentPoolProfiles.scaleSetPriority,
VMSize = tostring(AgentPoolProfiles.vmSize),
nodeCount = tostring(AgentPoolProfiles.['count']),
minCount = tostring(AgentPoolProfiles.minCount),
maxCount = tostring(AgentPoolProfiles.maxCount),
location,
resourceGroup,
subscriptionId,
AKSname = name
Usare le macchine virtuali Spot per i cluster AKS
Raccomandazione: usare VM Spot per i pool di nodi agente di AKS per ridurre i costi di calcolo per carichi di lavoro a tolleranza agli errori e interrompibili.
Informazioni su Spot VM in AKS
VM Spot sfruttano la capacità inutilizzata di Azure a un costo notevolmente ridotto. Quando Azure richiede di nuovo la capacità, l'infrastruttura Azure rimuove le macchine virtuali spot. Le macchine virtuali spot sono utili per i carichi di lavoro che possono gestire interruzioni, ad esempio processi di elaborazione batch, ambienti di sviluppo/test e carichi di lavoro di calcolo di grandi dimensioni.
I cluster AKS che usano la scalabilità automatica senza sfruttare le macchine virtuali Spot potrebbero comportare costi superiori al necessario. Abilitando le macchine virtuali spot per i carichi di lavoro interrompibili, è possibile ridurre significativamente i costi di calcolo. Questa raccomandazione si applica solo ai cluster che eseguono carichi di lavoro che possono tollerare interruzioni. Non tutti i carichi di lavoro sono adatti alle macchine virtuali spot.
Annotazioni
Hub FinOps possono identificare automaticamente i cluster AKS senza VM Spot come raccomandazione con attivazione esplicita. Scopri di più.
Query: cluster del servizio Azure Kubernetes senza macchine virtuali spot
Usare la query ARG seguente per identificare i cluster AKS con scalabilità automatica abilitata che non usano macchine virtuali Spot.
Categoria
Optimization
Quesito
resources
| where type == 'microsoft.containerservice/managedclusters'
| mvexpand AgentPoolProfiles = properties.agentPoolProfiles
| where AgentPoolProfiles.enableAutoScaling == true
and isnull(AgentPoolProfiles.scaleSetPriority)
| project
ResourceId = id,
AKSName = name,
ProfileName = tostring(AgentPoolProfiles.name),
VMSize = tostring(AgentPoolProfiles.vmSize),
NodeCount = tostring(AgentPoolProfiles.['count']),
MinCount = tostring(AgentPoolProfiles.minCount),
MaxCount = tostring(AgentPoolProfiles.maxCount),
Region = location,
ResourceGroupName = resourceGroup,
SubscriptionId = subscriptionId
Macchine virtuali
Le macchine virtuali di Azure sono uno dei diversi tipi di risorse di calcolo su richiesta e scalabili offerte da Azure. In genere, si sceglie una macchina virtuale quando è necessario un maggiore controllo sull'ambiente di elaborazione rispetto alle altre opzioni offerte.
Una macchina virtuale di Azure offre la flessibilità della virtualizzazione senza dover acquistare e gestire l'hardware fisico che lo esegue. Tuttavia, è comunque necessario mantenere la macchina virtuale eseguendo attività, ad esempio la configurazione, l'applicazione di patch e l'installazione del software in esecuzione.
Risorse correlate:
- Pagina del prodotto Macchine virtuali
- prezzi delle macchine virtuali
- documentazione della macchina virtuale
- I servizi di Azure per il calcolo scalabile su richiesta
Deallocare macchine virtuali
Raccomandazione: deallocare le macchine virtuali per evitare addebiti di calcolo inutilizzati. Evitare di arrestare le macchine virtuali senza deallocarle.
Informazioni sulle macchine virtuali inattive
Le macchine virtuali hanno due stati inattivi: Arrestato e Deallocato.
Le macchine virtuali spente sono state arrestate dall'interno del sistema operativo, ad esempio usando il comando Arresta. Le macchine virtuali arrestate sono spente, ma Azure riserva comunque risorse di calcolo, ad esempio CPU e memoria. Poiché le risorse di calcolo sono riservate e non sono disponibili per l'uso con altre macchine virtuali, queste macchine virtuali continuano a incorrere in costi di calcolo.
Le macchine virtuali deallocate vengono arrestate tramite le API di gestione cloud nel portale di Azure, nell'interfaccia della riga di comando, in PowerShell o in altri strumenti client. Quando una macchina virtuale viene deallocata, Azure rilascia le risorse di calcolo corrispondenti. Poiché le risorse di calcolo vengono rilasciate, queste macchine virtuali non comportano costi di calcolo; Tuttavia, è importante notare che le macchine virtuali arrestate e deallocate continuano a comportare addebiti non correlati al calcolo, ad esempio i costi di archiviazione dai dischi.
Annotazioni
Gli hub FinOps possono identificare automaticamente le macchine virtuali arrestate che non vengono deallocate. Scopri di più.
Identificare le macchine virtuali arrestate
Usare la seguente query di Azure Resource Graph (ARG) per identificare le macchine virtuali arrestate che non sono deallocate. Recupera i dettagli sullo stato di alimentazione, la posizione, il gruppo di risorse e l'ID sottoscrizione.
resources
| where type =~ 'microsoft.compute/virtualmachines'
| extend PowerState = tostring(properties.extended.instanceView.powerState.displayStatus)
| where PowerState !in =('VM deallocated', 'VM running')
| project
ResourceId = id,
PowerState,
Region = location,
ResourceGroupName = resourceGroup,
SubscriptionId = subscriptionId
Utilizzare gli sconti per impegno
Usa gli sconti relativi al contratto per risparmiare fino a 72% rispetto ai costi di listino.
Informazioni sugli sconti relativi all'impegno
Gli sconti per l'impegno sono incentivi finanziari offerti alle organizzazioni che si impegnano a usare i servizi di Azure per un periodo o un periodo specifico, in genere uno o tre anni. Accettando un importo fisso di utilizzo o spesa (costo) per il termine, le organizzazioni possono beneficiare di sconti significativi (fino a 72%) rispetto ai prezzi di listino. Gli sconti vengono applicati alle risorse idonee, aiutando le organizzazioni a risparmiare sui costi del cloud offrendo flessibilità e prevedibilità nel budget.
Per ulteriori informazioni sugli sconti di impegno, fare riferimento alla capacità di ottimizzazione della tariffa .
Misurare la copertura dello sconto sull'impegno per macchine virtuali
Usare la query dell'hub FinOps seguente per misurare la copertura complessiva del sconto d'impegno per le macchine virtuali.
Costs
| where ResourceType =~ 'Virtual machine'
| where x_SkuMeterCategory startswith 'Virtual Machines'
//
// Join with prices to filter out ineligible SKUs
| extend tmp_MeterKey = strcat(substring(ChargePeriodStart, 0, 7), x_SkuMeterId)
| project tmp_MeterKey, EffectiveCost, PricingCategory, CommitmentDiscountCategory, ResourceName, x_ResourceGroupName, SubAccountName, BillingCurrency
| join kind=leftouter (
Prices
| where x_SkuMeterCategory startswith 'Virtual Machines'
| summarize sp = countif(x_SkuPriceType == 'SavingsPlan'), ri = countif(x_SkuPriceType == 'ReservedInstance')
by tmp_MeterKey = strcat(substring(x_EffectivePeriodStart, 0, 7), x_SkuMeterId)
| project tmp_MeterKey, x_CommitmentDiscountSpendEligibility = iff(sp == 0, 'Not Eligible', 'Eligible'), x_CommitmentDiscountUsageEligibility = iff(ri == 0, 'Not Eligible', 'Eligible')
) on tmp_MeterKey
| extend x_CommitmentDiscountUsageEligibility = iff(isempty(x_CommitmentDiscountUsageEligibility), '(missing prices)', x_CommitmentDiscountUsageEligibility)
| extend x_CommitmentDiscountSpendEligibility = iff(isempty(x_CommitmentDiscountSpendEligibility), '(missing prices)', x_CommitmentDiscountSpendEligibility)
//
// Sum costs
| summarize
TotalCost = sum(EffectiveCost),
OnDemandCost = sumif(EffectiveCost, PricingCategory == 'Standard'),
SpotCost = sumif(EffectiveCost, PricingCategory == 'Dynamic'),
CommittedCost = sumif(EffectiveCost, PricingCategory == 'Committed'),
CommittedSpendCost = sumif(EffectiveCost, CommitmentDiscountCategory == 'Spend'),
CommittedUsageCost = sumif(EffectiveCost, CommitmentDiscountCategory == 'Usage')
by x_CommitmentDiscountUsageEligibility, x_CommitmentDiscountSpendEligibility, BillingCurrency
| extend OnDemandPercent = round(OnDemandCost / TotalCost * 100, 2)
| extend CoveragePercent = round(CommittedCost / TotalCost * 100, 2)
| extend CoverageUsagePercent = round(CommittedUsageCost / TotalCost * 100, 2)
| extend CoverageSpendPercent = round(CommittedSpendCost / TotalCost * 100, 2)
| order by CoveragePercent desc
Usare la query seguente per analizzare la ripartizione dei costi per macchina virtuale, inclusi gli sconti per impegno.
Costs
| where ResourceType =~ 'Virtual machine'
| where x_SkuMeterCategory startswith 'Virtual Machines'
//
// Join with prices to filter out ineligible SKUs
| extend tmp_MeterKey = strcat(substring(ChargePeriodStart, 0, 7), x_SkuMeterId)
| project tmp_MeterKey, EffectiveCost, PricingCategory, CommitmentDiscountCategory, ResourceName, x_ResourceGroupName, SubAccountName, BillingCurrency
| join kind=leftouter (
Prices
| where x_SkuMeterCategory startswith 'Virtual Machines'
| summarize sp = countif(x_SkuPriceType == 'SavingsPlan'), ri = countif(x_SkuPriceType == 'ReservedInstance')
by tmp_MeterKey = strcat(substring(x_EffectivePeriodStart, 0, 7), x_SkuMeterId)
| project tmp_MeterKey, x_CommitmentDiscountSpendEligibility = iff(sp == 0, 'Not Eligible', 'Eligible'), x_CommitmentDiscountUsageEligibility = iff(ri == 0, 'Not Eligible', 'Eligible')
) on tmp_MeterKey
| extend x_CommitmentDiscountUsageEligibility = iff(isempty(x_CommitmentDiscountUsageEligibility), '(missing prices)', x_CommitmentDiscountUsageEligibility)
| extend x_CommitmentDiscountSpendEligibility = iff(isempty(x_CommitmentDiscountSpendEligibility), '(missing prices)', x_CommitmentDiscountSpendEligibility)
//
// Sum costs by resource
| summarize
TotalCost = sum(EffectiveCost),
OnDemandCost = sumif(EffectiveCost, PricingCategory == 'Standard'),
SpotCost = sumif(EffectiveCost, PricingCategory == 'Dynamic'),
CommittedCost = sumif(EffectiveCost, PricingCategory == 'Committed'),
CommittedSpendCost = sumif(EffectiveCost, CommitmentDiscountCategory == 'Spend'),
CommittedUsageCost = sumif(EffectiveCost, CommitmentDiscountCategory == 'Usage')
by ResourceName, x_ResourceGroupName, SubAccountName, x_CommitmentDiscountUsageEligibility, x_CommitmentDiscountSpendEligibility, BillingCurrency
| extend OnDemandPercent = round(OnDemandCost / TotalCost * 100, 2)
| extend CoveragePercent = round(CommittedCost / TotalCost * 100, 2)
| extend CoverageUsagePercent = round(CommittedUsageCost / TotalCost * 100, 2)
| extend CoverageSpendPercent = round(CommittedSpendCost / TotalCost * 100, 2)
| order by CoveragePercent desc
Per altre informazioni sugli hub FinOps, vedere hub FinOps.
Query: Dettagli del set di scalabilità di macchine virtuali
Questa query analizza i set di scalabilità delle macchine virtuali nell'ambiente di Azure in base allo SKU, alla priorità della macchina virtuale spot e alla politica di combinazione di priorità. Fornisce informazioni dettagliate per l'ottimizzazione dei costi e le strategie di gestione delle risorse.
Categoria
Gestione delle risorse
Quesito
resources
| where type =~ 'microsoft.compute/virtualmachinescalesets'
| extend SpotVMs = tostring(properties.virtualMachineProfile.priority)
| extend SpotPriorityMix = tostring(properties.priorityMixPolicy)
| extend SKU = tostring(sku.name)
| extend resourceGroup = strcat('/subscriptions/', subscriptionId, '/resourceGroups/', resourceGroup)
| project id, SKU, SpotVMs, SpotPriorityMix, subscriptionId, resourceGroup, location
Eseguire la migrazione a dischi gestiti
Raccomandazione: eseguire la migrazione di macchine virtuali usando dischi non gestiti in dischi gestiti per migliorare l'affidabilità, semplificare la gestione e preparare il ritiro dei dischi non gestiti.
Informazioni sui dischi non gestiti
Dischi non gestiti archiviano i file VHD come BLOB di pagina negli account di Archiviazione di Azure, richiedendo di gestire autonomamente la capacità, le prestazioni e la sicurezza dell'account di archiviazione. I dischi gestiti semplificano la gestione dei dischi gestendo automaticamente la gestione degli account di archiviazione, offrendo un'affidabilità migliore con i set di disponibilità, un controllo di accesso più granulare e il supporto per funzionalità più recenti, come la crittografia del disco e il bursting. Microsoft ha annunciato il ritiro dei dischi non gestiti, quindi la migrazione ai dischi gestiti è sia un'ottimizzazione dei costi che un passaggio di conformità.
Annotazioni
Gli hub FinOps possono identificare automaticamente le macchine virtuali usando dischi non gestiti. Scopri di più.
Identificare le macchine virtuali con dischi non gestiti
Usare la query ARG seguente per identificare le macchine virtuali che usano ancora dischi non gestiti.
resources
| where type =~ 'microsoft.compute/virtualmachines'
| where isnull(properties.storageProfile.osDisk.managedDisk)
| project
ResourceId = tolower(id),
ResourceName = name,
OsDiskVhd = tostring(properties.storageProfile.osDisk.vhd.uri),
Region = location,
ResourceGroupName = resourceGroup,
SubscriptionId = subscriptionId
Query: Analisi dei tipi di processore di macchine virtuali
Questa query identifica il tipo di processore (ARM, AMD o Intel) usato dalle macchine virtuali nell'ambiente Azure. Consente di comprendere la distribuzione delle macchine virtuali in diverse architetture del processore, utile per ottimizzare le prestazioni del carico di lavoro e l'efficienza dei costi.
Categoria
Gestione delle risorse
Quesito
resources
| where type == 'microsoft.compute/virtualmachines'
| extend vmSize = properties.hardwareProfile.vmSize
| extend processorType = case(
// ARM Processors
vmSize has "Epsv5"
or vmSize has "Epdsv5"
or vmSize has "Dpsv5"
or vmSize has "Dpdsv", "ARM",
// AMD Processors
vmSize has "Standard_D2a"
or vmSize has "Standard_D4a"
or vmSize has "Standard_D8a"
or vmSize has "Standard_D16a"
or vmSize has "Standard_D32a"
or vmSize has "Standard_D48a"
or vmSize has "Standard_D64a"
or vmSize has "Standard_D96a"
or vmSize has "Standard_D2as"
or vmSize has "Standard_D4as"
or vmSize has "Standard_D8as"
or vmSize has "Standard_D16as"
or vmSize has "Standard_D32as"
or vmSize has "Standard_D48as"
or vmSize has "Standard_D64as"
or vmSize has "Standard_D96as", "AMD",
"Intel"
)
| project vmName = name, processorType, vmSize, resourceGroup
Usare Vantaggio Azure Hybrid per le macchine virtuali di Windows
Raccomandazione: abilitare Vantaggio Azure Hybrid per le macchine virtuali Windows per ridurre i costi di licenza usando le licenze esistenti di Windows Server in locale.
Informazioni su Vantaggio Azure Hybrid per Windows
Vantaggio Azure Hybrid consente di usare le licenze Windows Server locali con Software Assurance o Windows Server sottoscrizione per eseguire macchine virtuali Windows in Azure a un costo ridotto. Invece di pagare una licenza Windows Server completa con ogni macchina virtuale, è possibile portare le licenze esistenti e pagare solo per il costo di calcolo di base. Questa raccomandazione si applica solo se l'organizzazione ha licenze locali Windows Server idonee.
Annotazioni
Hub FinOps possono identificare automaticamente le macchine virtuali Windows che non usano Vantaggio Azure Hybrid come raccomandazione facoltativa. Scopri di più.
Query: macchine virtuali Windows senza Vantaggio Azure Hybrid
Usare la query ARG seguente per identificare le macchine virtuali Windows e i set di scalabilità di macchine virtuali che non sfruttano Vantaggio Azure Hybrid. La query esclude le sottoscrizioni di sviluppo/test, che hanno già licenze scontate.
Categoria
Optimization
Quesito
resourcecontainers
| where type =~ 'Microsoft.Resources/subscriptions'
| where tostring(properties.subscriptionPolicies.quotaId) !has 'MSDNDevTest_2014-09-01'
| project SubscriptionName = name, subscriptionId
| join (
resources
| where type =~ 'microsoft.compute/virtualmachines'
or type =~ 'microsoft.compute/virtualMachineScaleSets'
| where tostring(properties.storageProfile.osDisk.osType) == 'Windows'
or tostring(properties.virtualMachineProfile.storageProfile.osDisk.osType) == 'Windows'
| where tostring(properties.['licenseType']) !has 'Windows'
and tostring(properties.virtualMachineProfile.['licenseType']) != 'Windows_Server'
| project
ResourceId = id,
ResourceName = name,
VMSize = tostring(properties.hardwareProfile.vmSize),
LicenseType = tostring(properties.['licenseType']),
Region = location,
ResourceGroupName = resourceGroup,
subscriptionId
) on subscriptionId
| project
ResourceId,
ResourceName,
VMSize,
LicenseType,
Region,
ResourceGroupName,
SubscriptionName,
SubscriptionId = subscriptionId
Usare Vantaggio Azure Hybrid per le macchine virtuali SQL
Raccomandazione: abilitare Vantaggio Azure Hybrid per le macchine virtuali SQL Server per ridurre i costi di licenza utilizzando le licenze SQL Server locali esistenti.
Informazioni su Vantaggio Azure Hybrid per le macchine virtuali SQL
Vantaggio Azure Hybrid per SQL Server consente di usare le licenze SQL Server locali con Software Assurance per eseguire SQL Server macchine virtuali in Azure a un costo ridotto. Questo vantaggio si applica alle edizioni Standard ed Enterprise (le edizioni Developer ed Express sono già gratuite e non sono necessarie Vantaggio Azure Hybrid). Questa raccomandazione si applica solo se l'organizzazione dispone di licenze locali SQL Server con Software Assurance.
Annotazioni
HubFinOps può identificare automaticamente le macchine virtuali SQL senza Vantaggio Azure Hybrid come raccomandazione di consenso esplicito. Scopri di più.
Query: MACCHINE virtuali SQL senza Vantaggio Azure Hybrid
Usa la query ARG seguente per identificare le VM di SQL Server che non usufruiscono di Vantaggio Azure Hybrid. La query esclude le sottoscrizioni di sviluppo/test e le edizioni Developer/Express.
Categoria
Optimization
Quesito
resourcecontainers
| where type =~ 'Microsoft.Resources/subscriptions'
| where tostring(properties.subscriptionPolicies.quotaId) !has 'MSDNDevTest_2014-09-01'
| project SubscriptionName = name, subscriptionId
| join (
resources
| where type =~ 'Microsoft.SqlVirtualMachine/SqlVirtualMachines'
and tostring(properties.['sqlServerLicenseType']) != 'AHUB'
| project
ResourceId = id,
ResourceName = name,
LicenseType = tostring(properties.['sqlServerLicenseType']),
SQLVersion = tostring(properties.['sqlImageOffer']),
SQLSKU = tostring(properties.['sqlImageSku']),
Region = location,
ResourceGroupName = resourceGroup,
subscriptionId
) on subscriptionId
| join (
resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| project
ResourceName = tolower(name),
VMSize = tostring(properties.hardwareProfile.vmSize),
subscriptionId
) on ResourceName
| where SQLSKU != 'Developer' and SQLSKU != 'Express'
| project
ResourceId,
ResourceName,
VMSize,
LicenseType,
SQLVersion,
SQLSKU,
Region,
ResourceGroupName,
SubscriptionName,
SubscriptionId = subscriptionId
Inviare commenti e suggerimenti
Facci sapere come ci trovi con una breve recensione. Queste revisioni vengono usate per migliorare ed espandere strumenti e risorse FinOps.
Se si sta cercando qualcosa di specifico, votare per un'idea esistente o crearne una nuova. Condividere idee con altri utenti per ottenere più voti. Ci concentriamo sulle idee con il maggior numero di voti.
Contenuto correlato
Risorse correlate:
Prodotti correlati:
Soluzioni correlate:
- Report di Power BI per FinOps Toolkit
- Hub FinOps
- Cartelle di lavoro di FinOps
- Motore di ottimizzazione