Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel vindt u een overzicht van een verzameling bewezen FinOps-procedures voor rekenservices. Het biedt richtlijnen voor het optimaliseren van kosten, het verbeteren van de efficiëntie en het verkrijgen van inzicht in uw rekenresources in Azure. De procedures worden gecategoriseerd op basis van het type rekenservice, zoals virtuele machines (VM), Azure Kubernetes Service (AKS) en Azure Functions.
Azure Kubernetes Service
Azure Kubernetes Service (AKS) vereenvoudigt het implementeren en beheren van toepassingen in containers. Het biedt serverloze Kubernetes, een geïntegreerde CI/CD-ervaring en beveiliging en governance op bedrijfsniveau.
Gerelateerde resources:
- Azure Kubernetes Service-productpagina
- Azure Kubernetes Service-prijzen
- Documentatie voor Azure Kubernetes Service
- AKS-basislijnarchitectuur
Zoekopdracht: details van het AKS-cluster
Met deze ARG-query wordt gedetailleerde informatie opgehaald over AKS-clusters in uw Azure-omgeving.
Categorie
Resourcebeheer
Vraag
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
Spot-VM's gebruiken voor AKS-clusters
Aanbeveling: Gebruik spot-VM's voor AKS-agentgroepen om de rekenkosten voor fouttolerante, onderbreekbare werkbelastingen te verlagen.
Informatie over Spot-VM's in AKS
Spot-VM's profiteren van ongebruikte Azure capaciteit tegen een aanzienlijk lagere kosten. Wanneer Azure de capaciteit weer nodig heeft, verwijdert de Azure infrastructuur spot-VM's. Spot-VM's zijn handig voor workloads die onderbrekingen kunnen verwerken, zoals batchverwerkingstaken, ontwikkel-/testomgevingen en grote rekenworkloads.
AKS-clusters die gebruikmaken van automatisch schalen, maar die geen gebruik maken van spot-VM's, betalen mogelijk meer dan nodig is. Door spot-VM's in te schakelen voor onderbreekbare workloads, kunt u de rekenkosten aanzienlijk verlagen. Deze aanbeveling is alleen van toepassing op clusters met workloads die onderbrekingen kunnen verdragen. Niet alle workloads zijn geschikt voor spot-VM's.
Note
FinOps hubs kunnen AKS-clusters zonder Spot-VM's automatisch identificeren als opt-in-aanbeveling. Meer informatie.
Query: AKS-clusters zonder spot-VM's
Gebruik de volgende ARG-query om AKS-clusters te identificeren waarvoor automatisch schalen is ingeschakeld die geen spot-VM's gebruiken.
Categorie
Optimization
Vraag
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
Virtuele machines
Virtuele Azure-machines (VM's) zijn een van de verschillende typen on-demand, schaalbare computingresources die Azure biedt. Normaal gesproken kiest u een VIRTUELE machine wanneer u meer controle nodig hebt over de computeromgeving dan de andere opties.
Een Virtuele Azure-machine biedt u de flexibiliteit van virtualisatie zonder dat u de fysieke hardware hoeft te kopen en te onderhouden waarop deze wordt uitgevoerd. U moet de virtuele machine echter nog steeds onderhouden door taken uit te voeren, zoals het configureren, patchen en installeren van de software die erop wordt uitgevoerd.
Gerelateerde resources:
- productpagina virtuele machines
- kosten voor virtuele machines
- Documentatie van virtuele machine
- Azure-services voor op aanvraag, schaalbare rekencapaciteit
Virtuele machines vrijgeven
Aanbeveling: VM's dealloceren om kosten voor ongebruikte rekenkracht te voorkomen. Vermijd het stoppen van VM's zonder ze te dealloceren.
Over inactieve virtuele machines
VM's hebben twee inactieve statussen: Gestopt en Vrijgemaakt.
Gestopte VM's zijn afgesloten vanuit het besturingssysteem (bijvoorbeeld met behulp van de opdracht Afsluiten). Gestopte VM's worden uitgeschakeld, maar Azure reserveert nog steeds rekenresources, zoals CPU en geheugen. Omdat rekenresources zijn gereserveerd en niet beschikbaar zijn voor gebruik met andere VM's, blijven deze VM's rekenkosten in rekening brengen.
Niet-toegewezen virtuele machines worden gestopt via cloudbeheer-API's in de Azure-portal, CLI, PowerShell of een ander clienthulpmiddel. Wanneer een virtuele machine wordt gedealloceerd, worden de bijbehorende rekenmiddelen in Azure vrijgegeven. Omdat rekenresources worden vrijgegeven, worden voor deze VM's geen rekenkosten in rekening gebracht. Het is echter belangrijk te weten dat zowel gestopte als niet-toegewezen VM's kosten in rekening blijven brengen die niet zijn gerelateerd aan berekeningen, zoals opslagkosten van schijven.
Note
FinOps-hubs kunnen automatisch gestopte VM's identificeren die niet zijn toegewezen. Meer informatie.
Gestopte VM's identificeren
Gebruik de volgende Arg-query (Azure Resource Graph) om gestopte VM's te identificeren die niet zijn toegewezen. Er worden details opgehaald over hun energiestatus, locatie, resourcegroep en abonnements-id.
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
Toezeggingskortingen gebruiken
Aanbeveling: Gebruik toezeggingskortingen om maximaal 72% te besparen in vergelijking met lijstkosten.
In verband met toezeggingskortingen
Toezeggingskortingen zijn financiële incentives die worden aangeboden aan organisaties die azure-services gedurende een bepaalde periode of termijn gebruiken, meestal één of drie jaar. Door akkoord te gaan met een vast bedrag aan gebruik of uitgaven (kosten) voor de looptijd, kunnen organisaties profiteren van aanzienlijke kortingen (tot 72%) vergeleken met de lijstprijzen. Kortingen worden toegepast op in aanmerking komende resources, waardoor organisaties kunnen besparen op hun cloudkosten en tegelijkertijd flexibiliteit en voorspelbaarheid bieden in hun budgettering.
Voor meer informatie over toezeggingskortingen raadpleegt u de mogelijkheid voor tariefoptimalisatie.
De dekking van de toezeggingskorting voor virtuele machines meten
Gebruik de volgende FinOps Hub-query om de totale kortingsdekking voor VM-toezeggingen te meten.
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
Gebruik de volgende query om de kostenanalyse per VM te meten, inclusief dekking van toezeggingskortingen.
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
Raadpleeg FinOps-hubsvoor meer informatie over FinOps-hubs.
Query: Details van de schaalset voor virtuele machines
Deze query analyseert virtuele-machineschaalsets in uw Azure-omgeving op basis van hun SKU, spot VM-prioriteit en prioriteitsmixbeleid. Het biedt inzichten voor strategieën voor kostenoptimalisatie en resourcebeheer.
Categorie
Resourcebeheer
Vraag
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
Migreren naar beheerde schijven
Aanbeveling: Migreer VM's met onbeheerde schijven naar beheerde schijven om de betrouwbaarheid te verbeteren, het beheer te vereenvoudigen en de buitengebruikstelling van niet-beheerde schijven voor te bereiden.
Over niet-beheerde schijven
Onbeheerde schijven VHD-bestanden opslaan als pagina-blobs in Azure Storage-accounts, waarbij u de capaciteit, prestaties en beveiliging van het opslagaccount zelf moet beheren. Beheerde schijven vereenvoudigen schijfbeheer door opslagaccountbeheer voor u te verwerken, waardoor u betere betrouwbaarheid krijgt met beschikbaarheidssets, gedetailleerdere toegangsbeheer en ondersteuning voor nieuwere functies, zoals schijfversleuteling en bursting. Microsoft de buitengebruikstelling van niet-beheerde schijven heeft aangekondigd, dus migreren naar beheerde schijven is zowel een kostenoptimalisatie als een nalevingsstap.
Note
Met FinOps-hubs kunnen vm's automatisch worden geïdentificeerd met behulp van niet-beheerde schijven. Meer informatie.
VM's met niet-beheerde schijven identificeren
Gebruik de volgende ARG-query om VM's te identificeren die nog steeds onbeheerde schijven gebruiken.
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: Analyse van processortype van virtuele machine
Deze query identificeert het processortype (ARM, AMD of Intel) dat wordt gebruikt door VM's in uw Azure-omgeving. Het helpt bij het begrijpen van de distributie van VM's in verschillende processorarchitecturen, wat handig is voor het optimaliseren van workloadprestaties en kostenefficiëntie.
Categorie
Resourcebeheer
Vraag
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
Azure Hybrid Benefit gebruiken voor Windows VM's
Aanbeveling: schakel Azure Hybrid Benefit in voor Windows VM's om de licentiekosten te verlagen met behulp van bestaande on-premises Windows Server licenties.
Info over Azure Hybrid Benefit voor Windows
Azure Hybrid Benefit kunt u uw on-premises Windows Server licenties gebruiken met Software Assurance of Windows Server-abonnement om Windows VM's tegen lagere kosten uit te voeren in Azure. In plaats van te betalen voor een volledige Windows Server licentie met elke VIRTUELE machine, kunt u uw bestaande licenties meenemen en alleen betalen voor de basiskosten voor rekenkracht. Deze aanbeveling is alleen van toepassing als uw organisatie on-premises Windows Server licenties heeft.
Note
FinOps-hubs kunnen automatisch Windows VM's identificeren zonder Azure Hybrid Benefit als aanbeveling voor aanmelden. Meer informatie.
Query: Windows-VM's zonder Azure Hybrid Benefit
Gebruik de volgende ARG-query om Windows VM's en schaalsets te identificeren die niet gebruikmaken van Azure Hybrid Benefit. De query sluit dev/test-abonnementen uit, waarvoor al kortingslicenties zijn toegewezen.
Categorie
Optimization
Vraag
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
Azure Hybrid Benefit gebruiken voor SQL-VM's
Aanbeveling: schakel Azure Hybrid Benefit in voor SQL Server VM's om licentiekosten te verlagen met behulp van bestaande on-premises SQL Server licenties.
Info over Azure Hybrid Benefit voor SQL-VM's
Azure Hybrid Benefit voor SQL Server kunt u uw on-premises SQL Server licenties gebruiken met Software Assurance om SQL Server VM's in Azure tegen lagere kosten uit te voeren. Dit voordeel is van toepassing op Standard- en Enterprise-edities (Developer- en Express-edities zijn al gratis en hebben geen Azure Hybrid Benefit nodig). Deze aanbeveling is alleen van toepassing als uw organisatie on-premises SQL Server-licenties heeft die in aanmerking komen voor Software Assurance.
Note
FinOps-hubs kunnen automatisch SQL-VM's identificeren zonder Azure Hybrid Benefit als aanbeveling voor aanmelden. Meer informatie.
Query: SQL-VM's zonder Azure Hybrid Benefit
Gebruik de volgende ARG-query om SQL Server VM's te identificeren die niet gebruikmaken van Azure Hybrid Benefit. De query sluit dev/test-abonnementen en Developer/Express-edities uit.
Categorie
Optimization
Vraag
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
Feedback geven
Laat ons weten hoe we het doen met een korte recensie. We gebruiken deze beoordelingen om FinOps-hulpprogramma's en -resources te verbeteren en uit te breiden.
Als u op zoek bent naar iets specifieks, stem dan op een bestaande of maak een nieuw idee. Deel ideeën met anderen om meer stemmen te krijgen. We richten ons op ideeën met de meeste stemmen.
Gerelateerde inhoud
Gerelateerde resources:
Gerelateerde producten:
Verwante oplossingen: