Sdílet prostřednictvím


Osvědčené postupy FinOps pro výpočetní prostředky

Tento článek popisuje kolekci osvědčených postupů FinOps pro výpočetní služby. Poskytuje pokyny k optimalizaci nákladů, zlepšení efektivity a získání přehledů o výpočetních prostředcích v Azure. Postupy se kategorizují na základě typu výpočetní služby, jako jsou virtuální počítače, Azure Kubernetes Service (AKS) a Azure Functions.


Azure Kubernetes Service

Následující část obsahuje dotaz Azure Resource Graphu (ARG) pro clustery AKS. Dotaz vám pomůže získat přehled o virtuálních počítačích.

Dotaz – cluster AKS

Tento dotaz ARG načte podrobné informace o clusterech AKS ve vašem prostředí Azure.

Kategorie

Řízení zdrojů

Dotaz

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

Virtuální počítače

Virtuální počítače Azure jsou jedním z několika typů škálovatelných výpočetních prostředků na vyžádání, které Azure nabízí. Virtuální počítač obvykle zvolíte v případě, že potřebujete větší kontrolu nad výpočetním prostředím, než nabízí ostatní možnosti.

Virtuální počítač Azure poskytuje flexibilitu virtualizace, aniž byste museli kupovat a udržovat fyzický hardware, na kterém běží. Virtuální počítač ale stále potřebujete udržovat provedením úloh, jako je konfigurace, opravy a instalace softwaru, který na něm běží.

Související zdroje:

Uvolnit virtuální počítače

Doporučení: Uvolněte virtuální počítače, abyste se vyhnuli nepoužívaným poplatkům za výpočetní prostředky. Vyhněte se zastavení virtuálních počítačů bez jejich dealokace.

Informace o neaktivních virtuálních počítačích

Virtuální počítače mají dva neaktivní stavy: Zastaveno a Dealokováno.

Zastavené virtuální počítače se vypnuly z operačního systému (například pomocí příkazu Vypnout). Zastavené virtuální počítače jsou vypnuté, ale Azure stále rezervuje výpočetní prostředky, jako je procesor a paměť. Vzhledem k tomu, že výpočetní prostředky jsou rezervované a nejsou k dispozici pro použití s jinými virtuálními počítači, účtují se za tyto virtuální počítače i nadále poplatky za výpočetní prostředky.

Uvolněné virtuální počítače se zastaví přes rozhraní pro správu cloudu v Azure portálu, CLI, PowerShellu nebo jiném klientském nástroji. Když je virtuální počítač uvolněný, Azure uvolní odpovídající výpočetní prostředky. Vzhledem k tomu, že se uvolní výpočetní prostředky, za tyto virtuální počítače se neúčtují poplatky za výpočetní prostředky; Je však důležité si uvědomit, že zastavené a uvolněné virtuální počítače i nadále účtují poplatky nesouvisející s výpočetními prostředky, jako jsou poplatky za úložiště z disků.

Identifikace zastavených virtuálních počítačů

Pomocí následujícího dotazu Azure Resource Graphu (ARG) identifikujte zastavené virtuální počítače, které nejsou uvolněné. Načte podrobnosti o jejich stavu napájení, umístění, skupině prostředků a ID předplatného.

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

Využijte slevy za závazek

Doporučení: Využijte slevy za závazky, abyste ušetřili až 72% v porovnání s ceníkovými cenami.

Informace o slevách na závazky

Slevy na závazky jsou finanční pobídky nabízené organizacím, které se zavázaly používat služby Azure za určité období nebo období, obvykle jeden nebo tři roky. Souhlasem se stanovenou částkou využití nebo výdajů na stanovené období mohou organizace získat výhodu v podobě významných slev (až 72%) oproti standardním ceníkovým cenám. Slevy se použijí na způsobilé prostředky, což organizacím pomáhá ušetřit náklady na cloud a zároveň zajistit flexibilitu a předvídatelnost rozpočtu.

Další informace o slevách za závazek viz Možnosti optimalizace sazeb.

Měřte pokrytí slevy za závazek na virtuálních počítačích

K měření celkového pokrytí slevy za závazek virtuálního počítače použijte následující dotaz centra FinOps.

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

Pomocí následujícího dotazu můžete měřit rozpis nákladů na virtuální počítač, včetně pokrytí slev za závazek.

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

Další informace o centrech FinOps najdete v center FinOps.

Dotaz – podrobnosti o škálovací sadě virtuálních počítačů

Tento dotaz analyzuje škálovací sady virtuálních počítačů ve vašem prostředí Azure na základě jejich skladové položky, priority virtuálního počítače a zásad mixu priorit. Poskytuje přehledy pro optimalizaci nákladů a strategie správy prostředků.

Kategorie

Řízení zdrojů

Dotaz

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

Dotaz – analýza typu procesoru virtuálního počítače

Tento dotaz identifikuje typ procesoru (ARM, AMD nebo Intel) používaný virtuálními počítači ve vašem prostředí Azure. Pomáhá pochopit distribuci virtuálních počítačů napříč různými architekturami procesoru, což je užitečné pro optimalizaci výkonu úloh a nákladovou efektivitu.

Kategorie

Řízení zdrojů

Dotaz

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

Váš názor

Dejte nám vědět, jak si vedeme, pomocí rychlé zpětné vazby. Tyto recenze používáme k vylepšení a rozšíření nástrojů a prostředků FinOps.

Pokud hledáte něco konkrétního, hlasujte pro existující nebo vytvořte nový nápad. Sdílejte nápady s ostatními, abyste získali více hlasů. Zaměřujeme se na nápady s nejvíce hlasy.


Související zdroje:

Související produkty:

Související řešení: