Bagikan melalui


Praktik terbaik FinOps untuk komputasi

Artikel ini menguraikan kumpulan praktik FinOps yang terbukti untuk layanan komputasi. Ini memberikan panduan tentang mengoptimalkan biaya, meningkatkan efisiensi, dan mendapatkan wawasan tentang sumber daya komputasi Anda di Azure. Praktik ini dikategorikan berdasarkan jenis layanan komputasi, seperti komputer virtual (VM), Azure Kubernetes Service (AKS), dan Azure Functions.


Azure Kubernetes Service

Bagian berikut ini menyediakan kueri Azure Resource Graph (ARG) untuk kluster AKS. Kueri membantu Anda mendapatkan wawasan tentang VM Anda.

Kueri - Kluster AKS

Kueri ARG ini mengambil informasi terperinci tentang kluster AKS di lingkungan Azure Anda.

Kategori

Manajemen sumber daya

Kueri

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

Mesin virtual

Komputer virtual (VM) Azure adalah salah satu dari beberapa jenis sumber daya komputasi sesuai permintaan dan dapat diskalakan yang ditawarkan Azure. Biasanya, Anda memilih VM ketika Anda membutuhkan lebih banyak kontrol atas lingkungan komputasi daripada yang ditawarkan pilihan lainnya.

Azure VM memberi Anda fleksibilitas virtualisasi tanpa harus membeli dan memelihara perangkat keras fisik yang menjalankannya. Namun, Anda masih perlu mempertahankan VM dengan melakukan tugas, seperti mengonfigurasi, menambal, dan menginstal perangkat lunak yang berjalan di atasnya.

Sumber daya terkait:

Membatalkan alokasi mesin virtual

Rekomendasi: Dealokasikan VM untuk menghindari biaya komputasi yang tidak terpakai. Hindari menghentikan VM tanpa membatalkan alokasinya.

Tentang VM yang tidak aktif

VM memiliki dua status tidak aktif: Dihentikan dan Dialokasikan Ulang.

VM yang dihentikan dimatikan dari dalam sistem operasi (misalnya, menggunakan perintah Matikan ). VM yang dihentikan dimatikan, tetapi Azure masih mencadangkan sumber daya komputasi, seperti CPU dan memori. Karena sumber daya komputasi dicadangkan dan tidak tersedia untuk digunakan dengan VM lain, VM ini terus dikenakan biaya komputasi.

VM yang dibatalkan alokasinya dihentikan melalui API manajemen cloud di portal Microsoft Azure, CLI, PowerShell, atau alat klien lainnya. Saat VM dinonaktifkan, Azure membebaskan sumber daya komputasi yang sesuai. Karena sumber daya komputasi dirilis, VM ini tidak dikenakan biaya komputasi; namun, penting untuk dicatat bahwa VM yang dihentikan dan dibatalkan alokasinya terus dikenakan biaya yang tidak terkait dengan komputasi, seperti biaya penyimpanan dari disk.

Mengidentifikasi VM yang dihentikan

Gunakan kueri Azure Resource Graph (ARG) berikut untuk mengidentifikasi VM yang dihentikan yang tidak dibatalkan alokasinya. Ini mengumpulkan detail tentang status daya, lokasi, grup sumber daya, dan ID langganan mereka.

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

Gunakan diskon komitmen

Rekomendasi: Gunakan diskon komitmen untuk menghemat hingga 72% daripada harga daftar.

Tentang diskon komitmen

Diskon komitmen adalah insentif keuangan yang ditawarkan kepada organisasi yang berkomitmen untuk menggunakan layanan Azure untuk periode atau jangka waktu tertentu, biasanya satu atau tiga tahun. Dengan menyetujui jumlah penggunaan atau pengeluaran tetap (biaya) untuk jangka waktu tersebut, organisasi dapat memperoleh manfaat dari diskon signifikan (hingga 72%) dibandingkan dengan harga daftar. Diskon diterapkan ke sumber daya yang memenuhi syarat, membantu organisasi menghemat biaya cloud mereka sambil memberikan fleksibilitas dan prediksi dalam anggaran mereka.

Untuk mempelajari selengkapnya tentang diskon komitmen, lihat kemampuan pengoptimalan tarif .

Mengukur cakupan diskon komitmen mesin virtual

Gunakan kueri hub FinOps berikut untuk mengukur cakupan diskon komitmen VM secara keseluruhan.

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

Gunakan kueri berikut untuk mengukur perincian biaya per VM, termasuk cakupan diskon komitmen.

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

Untuk mempelajari lebih lanjut tentang hub FinOps, lihat hub FinOps.

Pertanyaan - Detail set skala mesin virtual

Kueri ini menganalisis Virtual Machine Scale Sets di lingkungan Azure Anda berdasarkan SKU-nya, prioritas VM spot, dan kebijakan kombinasi prioritas mereka. Ini memberikan wawasan untuk pengoptimalan biaya dan strategi manajemen sumber daya.

Kategori

Manajemen sumber daya

Kueri

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

Kueri - Analisis jenis prosesor komputer virtual

Kueri ini mengidentifikasi jenis prosesor (ARM, AMD, atau Intel) yang digunakan oleh VM di lingkungan Azure Anda. Ini membantu dalam memahami distribusi VM di berbagai arsitektur prosesor, yang berguna untuk mengoptimalkan performa beban kerja dan efisiensi biaya.

Kategori

Manajemen sumber daya

Kueri

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

Berikan umpan balik

Beri tahu kami bagaimana kinerja kami melalui ulasan singkat. Kami menggunakan ulasan ini untuk meningkatkan dan memperluas alat dan sumber daya FinOps.

Jika Anda mencari sesuatu yang spesifik, pilih yang sudah ada atau buat ide baru. Bagikan ide dengan orang lain untuk mendapatkan lebih banyak suara. Kami fokus pada ide-ide dengan suara terbanyak.


Sumber daya terkait:

Produk terkait:

Solusi terkait: