Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Den här artikeln beskriver en samling beprövade FinOps-metoder för beräkningstjänster. Den ger vägledning om hur du optimerar kostnader, förbättrar effektiviteten och får insikter om dina beräkningsresurser i Azure. Metoderna kategoriseras baserat på typen av beräkningstjänst, till exempel virtuella datorer (VM), Azure Kubernetes Service (AKS) och Azure Functions.
Azure Kubernetes Service
Följande avsnitt innehåller en Azure Resource Graph-fråga (ARG) för AKS-kluster. Frågan hjälper dig att få insikter om dina virtuella datorer.
Fråga – AKS-kluster
Den här ARG-frågan hämtar detaljerad information om AKS-kluster i din Azure-miljö.
Kategori
Resurshantering
Fråga
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
Virtuella datorer
Virtuella Azure-datorer är en av flera typer av skalbara beräkningsresurser på begäran som Azure erbjuder. Vanligtvis väljer du en virtuell dator när du behöver mer kontroll över datormiljön än de andra alternativen erbjuder.
En virtuell Azure-dator ger dig flexibiliteten i virtualisering utan att behöva köpa och underhålla den fysiska maskinvara som kör den. Du behöver dock fortfarande underhålla den virtuella datorn genom att utföra uppgifter, till exempel att konfigurera, korrigera och installera programvaran som körs på den.
Relaterade resurser:
- produktsidan för virtuella datorer
- Prissättning för virtuella datorer
- Dokumentation om virtuella datorer
- Azure-tjänster för skalbar beräkning på begäran
Deallokera virtuella datorer
Rekommendation: Frigöra virtuella datorer för att undvika oanvända beräkningskostnader. Undvik att stoppa virtuella datorer utan att deallokera dem.
Om inaktiva virtuella datorer
Virtuella datorer har två inaktiva tillstånd: Stoppad och Deallokerad.
Stoppade virtuella datorer stängdes av från operativsystemet (till exempel med kommandot Stäng av). Stoppade virtuella datorer är avstängda, men Azure reserverar fortfarande beräkningsresurser, till exempel CPU och minne. Eftersom beräkningsresurser är reserverade och inte är tillgängliga för användning med andra virtuella datorer fortsätter dessa virtuella datorer att debiteras beräkningsavgifter.
Frigjorda virtuella datorer stoppas via molnhanterings-API:er i Azure-portalen, CLI, PowerShell eller andra klientverktyg. När en virtuell dator frigörs släpper Azure motsvarande beräkningsresurser. Eftersom beräkningsresurser släpps medför dessa virtuella datorer inte beräkningsavgifter. Det är dock viktigt att observera att både stoppade och frigjorda virtuella datorer fortsätter att medföra avgifter som inte är relaterade till beräkning, till exempel lagringsavgifter från diskar.
Identifiera stoppade virtuella datorer
Använd följande ARG-fråga (Azure Resource Graph) för att identifiera stoppade virtuella datorer som inte är avallokerade. Den hämtar information om deras energitillstånd, plats, resursgrupp och prenumerations-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
Använda åtaganderabatter
Rekommendation: Använd förpliktelserabatter för att spara upp till 72% jämfört med listpriser.
Om åtaganderabatter
Åtaganderabatter är ekonomiska incitament som erbjuds organisationer som förbinder sig att använda Azure-tjänster under en angiven period eller period, vanligtvis ett eller tre år. Genom att godkänna en fast mängd användning eller utgifter (kostnad) för termen kan organisationer dra nytta av betydande rabatter (upp till 72%) jämfört med listpriser. Rabatter tillämpas på berättigade resurser, vilket hjälper organisationer att spara på sina molnkostnader samtidigt som de ger flexibilitet och förutsägbarhet i sin budgetering.
Mer information om åtaganderabatter finns i Rate optimization capability.
Mäta täckning för åtaganderabatt för virtuell maskin
Använd följande FinOps-hubbfråga för att mäta övergripande rabatttäckning för VM-åtagande.
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
Använd följande fråga för att mäta kostnadsuppdelningen per virtuell dator, inklusive täckning av åtaganderabatter.
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
Mer information om FinOps-hubbar finns i FinOps-hubbar.
Fråga – Detaljer om virtuella maskinens skalningsuppsättning
Den här frågan analyserar virtuella maskin skalningsuppsättningar i din Azure-miljö baserat på deras SKU, spot VM-prioritet och prioritetsmixpolicy. Det ger insikter om strategier för kostnadsoptimering och resurshantering.
Kategori
Resurshantering
Fråga
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
Fråga – Analys av processortyp för virtuell dator
Den här frågan identifierar processortypen (ARM, AMD eller Intel) som används av virtuella datorer i din Azure-miljö. Det hjälper dig att förstå distributionen av virtuella datorer mellan olika processorarkitekturer, vilket är användbart för att optimera arbetsbelastningsprestanda och kostnadseffektivitet.
Kategori
Resurshantering
Fråga
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
Lämna feedback
Låt oss veta hur det går med en snabb granskning. Vi använder dessa granskningar för att förbättra och utöka FinOps-verktyg och -resurser.
Om du letar efter något specifikt kan du rösta på en befintlig eller skapa en ny idé. Dela idéer med andra för att få fler röster. Vi fokuserar på idéer med flest röster.
Relaterat innehåll
Relaterade resurser:
Relaterade produkter:
Relaterade lösningar: