Megosztás a következőn keresztül:


A FinOps számítási ajánlott eljárásai

Ez a cikk a számítási szolgáltatások bevált FinOps-eljárásainak gyűjteményét ismerteti. Útmutatást nyújt a költségek optimalizálásához, a hatékonyság javításához és az Azure-beli számítási erőforrások elemzéséhez. A gyakorlatok a számítási szolgáltatás típusa alapján vannak kategorizálva, például a virtuális gépek (VM), az Azure Kubernetes Service (AKS) és az Azure Functions alapján.


Azure Kubernetes Service

Az alábbi szakasz egy Azure Resource Graph (ARG) lekérdezést nyújt az AKS-fürtökhöz. A lekérdezés segítségével betekintést nyerhet a virtuális gépekbe.

Lekérdezés – AKS-fürt

Ez az ARG-lekérdezés részletes információkat kér le az Azure-környezetben található AKS-fürtökről.

Kategória

Erőforrás-kezelés

Lekérdezés

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

Virtual machines (Virtuális gépek)

Az Azure-beli virtuális gépek (VM-ek) a igény szerinti, méretezhető számítási erőforrások egyike, amelyet az Azurekínál. Általában akkor választ ki egy virtuális gépet, ha a többi választási lehetőségnél nagyobb mértékű vezérlésre van szüksége a számítási környezet felett.

Az Azure-beli virtuális gépek rugalmasságot biztosítanak a virtualizáláshoz anélkül, hogy meg kellene vásárolniuk és karbantartaniuk az azt futtató fizikai hardvert. A virtuális gépet azonban továbbra is fenn kell tartania olyan feladatok végrehajtásával, mint a konfigurálás, a javítás és a rajta futó szoftverek telepítése.

Kapcsolódó erőforrások:

Virtuális gépek kihelyezése

Javaslat: A VM-ek deallokálása a fel nem használt számítási költségek elkerülése érdekében. Kerülje a virtuális gépek leállítását anélkül, hogy dealokálná őket.

Tudnivalók az inaktív virtuális gépekről

A virtuális gépeknek két inaktív állapotuk van: leállítva és felszabadítva.

A leállított virtuális gépek le lettek állítva az operációs rendszeren belülről (például a Leállítás paranccsal). A leállított virtuális gépek ki vannak kapcsolva, de az Azure továbbra is fenntartja a számítási erőforrásokat, például a CPU-t és a memóriát. Mivel a számítási erőforrások fenntartottak, és nem használhatók más virtuális gépekhez, ezek a virtuális gépek továbbra is számítási díjakat vonnak maga után.

A felszabadított virtuális gépeket az Azure Portalon, a parancssori felületen, a PowerShellben vagy más ügyféleszközön lévő felhőfelügyeleti API-k segítségével állítja le a rendszer. Egy virtuális gép felszabadításakor az Azure felszabadítja a megfelelő számítási erőforrásokat. A számítási erőforrások kiadása óta ezek a virtuális gépek nem járnak számítási költségekkel; Fontos azonban megjegyezni, hogy a leállított és a felszabadított virtuális gépek továbbra is a számításhoz nem kapcsolódó díjakat vonnak maga után, például a lemezek tárolási díjait.

Leállított virtuális gépek azonosítása

Az alábbi Azure Resource Graph-lekérdezéssel azonosíthatja a leállított, de nem kiosztott virtuális gépeket. Lekéri az energiaállapotuk, a helyük, az erőforráscsoportjuk és az előfizetés-azonosítójuk részleteit.

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

Kötelezettségvállalási kedvezmények használata

Javaslat: A kötelezettségvállalási kedvezmények használatával akár 72% takaríthat meg a listaköltségekhez képest.

Tudnivalók a kötelezettségvállalási kedvezményekről

A kötelezettségvállalási kedvezmények pénzügyi ösztönzők azoknak a szervezeteknek, akik egy adott időszakra vagy időszakra, általában egy vagy három évre vállalják az Azure-szolgáltatások használatát. Azáltal, hogy megállapodnak egy meghatározott mennyiségű kihasználásról vagy költésről a periódusra, a szervezetek élvezhetik a jelentős kedvezményeket, akár 72%-vel, a listaárakhoz képest. A kedvezmények a jogosult erőforrásokra vonatkoznak, így a szervezetek megtakaríthatják felhőköltségeiket, miközben rugalmasságot és kiszámíthatóságot biztosítanak a költségvetésükben.

A kötelezettségvállalási kedvezményekről az Ároptimalizálási képességcímű cikkben olvashat bővebben.

Virtuális gép kötelezettségvállalási kedvezmény lefedettségének mérése

A következő FinOps Hub-lekérdezéssel mérheti a virtuális gépek teljes kötelezettségvállalási kedvezményének lefedettségét.

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

Az alábbi lekérdezéssel mérheti a költséglebontást virtuális gépenként, a kötelezettségvállalási kedvezmények lefedettségével együtt.

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

A FinOps hubokkal kapcsolatos további információkért tekintse meg FinOps Hubs.

Lekérdezés – Virtuális gép méretezési csoport részletei

Ez a lekérdezés az Azure-környezetben lévő virtuális gép méretezési készleteket elemzi SKU, spot virtuális gép prioritás és prioritás-elosztási szabályzat alapján. Elemzéseket nyújt a költségoptimalizáláshoz és az erőforrás-kezelési stratégiákhoz.

Kategória

Erőforrás-kezelés

Lekérdezés

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

Lekérdezés – Virtuálisgép-processzortípus-elemzés

Ez a lekérdezés azonosítja az Azure-környezetben lévő virtuális gépek által használt processzortípust (ARM, AMD vagy Intel). Segít megérteni a virtuális gépek különböző processzorarchitektúrák közötti elosztását, ami hasznos a számítási feladatok teljesítményének és költséghatékonyságának optimalizálásához.

Kategória

Erőforrás-kezelés

Lekérdezés

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

Visszajelzés küldése

Kérem, tájékoztasson minket egy gyors visszajelzéssel arról, hogyan haladunk. Ezeket a felülvizsgálatokat a FinOps-eszközök és -erőforrások fejlesztésére és bővítésére használjuk.

Ha valami konkrétat keres, szavazzon egy meglévőre, vagy hozzon létre egy új ötletet. Ossza meg ötleteit másokkal, hogy több szavazatot kapjon. A legtöbb szavazattal rendelkező ötletekre összpontosítunk.


Kapcsolódó erőforrások:

Kapcsolódó termékek:

Kapcsolódó megoldások: