Aracılığıyla paylaş


İşlem için en iyi FinOps yöntemleri

Bu makalede, işlem hizmetleri için kanıtlanmış FinOps uygulamalarının bir koleksiyonu özetlenmektedir. Azure'da maliyetleri iyileştirme, verimliliği artırma ve işlem kaynaklarınızla ilgili içgörüler elde etme konusunda rehberlik sağlar. Uygulamalar sanal makineler (VM), Azure Kubernetes Service (AKS) ve Azure İşlevleri gibi işlem hizmeti türüne göre kategorilere ayrılmıştır.


Azure Kubernetes Service

Aşağıdaki bölümde AKS kümeleri için bir Azure Kaynak Grafı (ARG) sorgusu sağlanmaktadır. Sorgu, VM'lerinizle ilgili içgörüler elde etmenize yardımcı olur.

Sorgu - AKS kümesi

Bu ARG sorgusu, Azure ortamınızdaki AKS kümeleri hakkında ayrıntılı bilgileri alır.

Kategori

Kaynak yönetimi

Sorgu

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

Sanal makineler

Azure sanal makineleri (VM'ler), Azure'ın sunduğu çeşitli isteğe bağlı, ölçeklenebilir bilgi işlem kaynaklarından biridir. Genellikle, bilgi işlem ortamı üzerinde diğer seçeneklerden daha fazla denetime ihtiyacınız olduğunda bir VM seçersiniz.

Bir Azure VM, onu çalıştıran fiziksel donanımı satın almanıza ve muhafaza etmenize gerek kalmadan size sanallaştırma esnekliği sunar. Ancak, yapılandırma, düzeltme eki uygulama ve üzerinde çalışan yazılımları yükleme gibi görevleri gerçekleştirerek VM'yi korumanız gerekir.

İlgili kaynaklar:

Sanal makineleri serbest bırakın

Öneri: Kullanılmayan işlem ücretlerinden kaçınmak için VM'leri serbest bırakma. VM'leri deallocate etmeden durdurmaktan kaçının.

Etkin olmayan VM'ler hakkında

VM'lerin iki etkin olmayan durumu vardır: Durduruldu ve Serbest Bırakıldı.

Durdurulan VM'ler işletim sisteminin içinden kapatıldı (örneğin, Kapat komutu kullanılarak). Durdurulan VM'ler kapatılır, ancak Azure cpu ve bellek gibi işlem kaynaklarını ayırmaya devam eder. İşlem kaynakları ayrılmış olduğundan ve diğer VM'lerle birlikte kullanılamadığından, bu VM'ler işlem ücretleri almaya devam eder.

Serbest bırakılmış VM'ler Azure portalında, CLI'da, PowerShell'de veya diğer istemci aracında bulut yönetimi API'leri aracılığıyla durdurulur. Bir VM serbest bırakıldığında Azure ilgili işlem kaynaklarını serbest bırakır. İşlem kaynakları yayınlandığından bu VM'ler işlem ücreti ödemez; ancak hem durdurulan hem de serbest bırakılan VM'lerin disklerden depolama ücretleri gibi işlemle ilgili olmayan ücretlendirmeler yapmaya devam ettiğini unutmayın.

Durdurulan VM'leri tanımlama

Deallocate edilmemiş olan durdurulmuş VM'leri tanımlamak için aşağıdaki Azure Kaynak Grafı (ARG) sorgusunu kullanın. Güç durumu, konum, kaynak grubu ve abonelik kimliği hakkındaki ayrıntıları alır.

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

Taahhüt indirimlerini kullanma

Öneri: Liste maliyetlerine kıyasla en fazla 72% tasarruf etmek için taahhüt indirimlerini kullanın.

Taahhüt indirimleri hakkında

Taahhüt indirimleri, Azure hizmetlerini belirli bir süre veya dönem boyunca (genellikle bir veya üç yıl) kullanmayı taahhüt eden kuruluşlara sunulan finansal teşviklerdir. Kuruluşlar, dönem için sabit miktarda kullanımı veya harcamayı (maliyet) kabul ederek, liste fiyatlarına kıyasla önemli indirimlerden (en fazla 72%) yararlanabilir. Uygun kaynaklara indirimler uygulanarak kuruluşların bulut maliyetlerinden tasarruf etmelerine yardımcı olurken, bütçelerinde esneklik ve öngörülebilirlik sağlar.

Taahhüt indirimleri hakkında daha fazla bilgi edinmek için Oran iyileştirme özelliğine bakın.

Sanal makine taahhüdü indirim kapsamını ölçün

Genel VM taahhüt indirim kapsamını ölçmek için aşağıdaki FinOps hub sorgusunu kullanın.

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

Taahhüt indirimlerinin kapsamı dahil olmak üzere VM başına maliyet dökümünü ölçmek için aşağıdaki sorguyu kullanın.

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

FinOps hub'ları hakkında daha fazla bilgi edinmek için bkz. FinOps hub'ları.

Sorgu - Sanal makine ölçek kümesi ayrıntıları

Bu sorgu, Azure ortamınızdaki Sanal Makine Ölçek Kümelerini SKU'suna, spot VM önceliğine ve öncelik karışımı ilkesine göre analiz eder. Maliyet iyileştirme ve kaynak yönetimi stratejilerine yönelik içgörüler sağlar.

Kategori

Kaynak yönetimi

Sorgu

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

Sorgu - Sanal makine işlemci türü analizi

Bu sorgu, Azure ortamınızdaki VM'ler tarafından kullanılan işlemci türünü (ARM, AMD veya Intel) tanımlar. VM'lerin farklı işlemci mimarileri arasındaki dağılımını anlamanıza yardımcı olur ve bu da iş yükü performansını ve maliyet verimliliğini iyileştirmek için kullanışlıdır.

Kategori

Kaynak yönetimi

Sorgu

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

Görüş bildirin

Hızlı bir incelemeyle nasıl olduğumuzu bize bildirin. Bu incelemeleri FinOps araçlarını ve kaynaklarını geliştirmek ve genişletmek için kullanırız.

Belirli bir şey arıyorsanız mevcut bir fikir için oy verin veya yeni bir fikir oluşturun. Daha fazla oy almak için başkalarıyla fikir paylaşın. En çok oyu alan fikirlere odaklanıyoruz.


İlgili kaynaklar:

İlgili ürünler:

İlgili çözümler: