Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 makineler ürün sayfası
- Sanal makine fiyatlandırması
- Sanal makine belgeleri
- İsteğe bağlı, ölçeklenebilir işlem için Azure hizmetleri
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 içerik
İlgili kaynaklar:
İlgili ürünler:
İlgili çözümler: