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

Azure Kubernetes Service (AKS) zjednodušuje nasazování a správu kontejnerizovaných aplikací. Nabízí bezserverové prostředí Kubernetes, integrované prostředí CI/CD a zabezpečení a zásady správného řízení na podnikové úrovni.

Související zdroje:

Dotaz: Podrobnosti o clusteru 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

Použití spotových virtuálních počítačů pro clustery AKS

Doporučení: Používejte virtuální počítače Spot pro fondy agentů AKS ke snížení nákladů na výpočetní prostředky u úloh odolných vůči chybám, které lze přerušit.

Informace o spotových virtuálních počítačích v AKS

Spotové virtuální počítače využívají nevyužitou kapacitu Azure s výrazně nižšími náklady. Když Azure potřebuje kapacitu zpět, Azure infrastruktura vyřadí spotové virtuální počítače. Spotové virtuální počítače jsou užitečné pro úlohy, které můžou zpracovávat přerušení, jako jsou úlohy dávkového zpracování, vývojové/testovací prostředí a velké výpočetní úlohy.

Clustery AKS, které používají automatické škálování, ale nevyužívá spotové virtuální počítače, můžou platit více, než je potřeba. Povolením spotových virtuálních počítačů pro přerušitelné úlohy můžete výrazně snížit náklady na výpočetní prostředky. Toto doporučení platí jenom pro clustery, na kterých běží úlohy, které můžou tolerovat přerušení. Ne všechny úlohy jsou vhodné pro spotové virtuální počítače.

Note

Centra FinOps mohou automaticky identifikovat clustery AKS bez virtuálních počítačů Azure Spot jako volitelné doporučení. Další informace.

Dotaz: Clustery AKS bez spotových virtuálních počítačů

Pomocí následujícího dotazu ARG identifikujte clustery AKS s povoleným automatickým škálováním, které nepoužívají spotové virtuální počítače.

Kategorie

Optimization

Dotaz

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

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ů.

Note

Centra FinOps mohou automaticky identifikovat zastavené virtuální počítače, které nejsou dealokované. Další informace.

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 škálovací sady 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

Migrace na spravované disky

Doporučení: Migrace virtuálních počítačů využívajících nespravované disky na spravované disky za účelem zlepšení spolehlivosti, zjednodušení správy a přípravy na vyřazení nespravovaných disků

Informace o nespravovaných discích

Nespravované disky ukládají soubory VHD jako objekty blob stránek v účtech služby Azure Storage, což vyžaduje, abyste sami spravovali kapacitu, výkon a zabezpečení účtu úložiště. Spravované disky zjednodušují správu disků tím, že za vás zpracovávají správu účtů úložiště, poskytují lepší spolehlivost skupin dostupnosti, podrobnější řízení přístupu a podporu novějších funkcí, jako je šifrování disků a shlukování. Microsoft oznámil vyřazení nespravovaných disků, takže migrace na spravované disky je optimalizace nákladů i krok dodržování předpisů.

Note

Centra FinOps můžou automaticky identifikovat virtuální počítače pomocí nespravovaných disků. Další informace.

Identifikace virtuálních počítačů s nespravovanými disky

Pomocí následujícího dotazu ARG identifikujte virtuální počítače, které stále používají nespravované disky.

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

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

Využijte Zvýhodněné hybridní využití Azure pro virtuální počítače s Windows

Doporučení: Povolte Zvýhodněné hybridní využití Azure pro virtuální počítače s Windows, abyste snížili náklady na licencování pomocí stávajících licencí systému Windows Server nasazeného místně.

Informace o Zvýhodněné hybridní využití Azure pro Windows

Zvýhodněné hybridní využití Azure umožňuje používat místní licence Windows Server s programem Software Assurance nebo Windows Server předplatné ke spouštění Windows virtuálních počítačů v Azure s nižšími náklady. Místo placení plné licence Windows Server s každým virtuálním počítačem můžete stávající licence přinést a platit jenom za základní náklady na výpočetní prostředky. Toto doporučení platí jenom v případě, že vaše organizace má nárok na místní Windows Server licence.

Note

Centra FinOps mohou automaticky identifikovat virtuální počítače s Windows bez služby Zvýhodněné hybridní využití Azure jako volitelné doporučení. Další informace.

Dotaz: virtuální počítače s Windows bez Zvýhodněné hybridní využití Azure

Pomocí následujícího dotazu ARG identifikujte Windows virtuální počítače a škálovací sady, které nevyužívá Zvýhodněné hybridní využití Azure. Dotaz vylučuje předplatná pro vývoj/testování, která už mají snížené licencování.

Kategorie

Optimization

Dotaz

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

Využijte Zvýhodněné hybridní využití Azure pro virtuální počítače se SQL

Doporučení: Povolte Zvýhodněné hybridní využití Azure pro virtuální počítače SQL Server, abyste snížili náklady na licencování pomocí stávajících místních SQL Server licencí.

Informace o Zvýhodněné hybridní využití Azure pro virtuální počítače se systémem SQL Server

Zvýhodněné hybridní využití Azure pro SQL Server umožňuje používat místní licence SQL Server se software Assurance ke spouštění SQL Server virtuálních počítačů v Azure s nižšími náklady. Tato výhoda platí pro edice Standard a Enterprise (edice Developer a Express jsou už bezplatné a nepotřebují Zvýhodněné hybridní využití Azure). Toto doporučení platí jenom v případě, že vaše organizace má kvalifikující místní SQL Server licence pomocí programu Software Assurance.

Note

Centra FinOps dokážou automaticky identifikovat virtuální počítače s SQL Serverem bez Zvýhodněné hybridní využití Azure jako volitelné doporučení. Další informace.

Dotaz: Virtuální počítače SQL bez Zvýhodněné hybridní využití Azure

Pomocí následujícího dotazu ARG identifikujte SQL Server virtuální počítače, které nepoužívají Zvýhodněné hybridní využití Azure. Dotaz vylučuje předplatná pro vývoj/testování a edice Developer/Express.

Kategorie

Optimization

Dotaz

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

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í: