Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano kolekcję sprawdzonych rozwiązań FinOps dotyczących usług obliczeniowych. Zawiera wskazówki dotyczące optymalizowania kosztów, poprawy wydajności i uzyskiwania wglądu w zasoby obliczeniowe na platformie Azure. Praktyki są podzielone na kategorie na podstawie typu usługi obliczeniowej, takiej jak maszyny wirtualne, usługa Azure Kubernetes Service (AKS) i usługa Azure Functions.
Azure Kubernetes Service
Poniższa sekcja zawiera zapytanie Azure Resource Graph dla klastrów AKS. Zapytanie pomaga uzyskać wgląd w maszyny wirtualne.
Zapytanie — klaster AKS
To zapytanie ARG pobiera szczegółowe informacje o klastrach Azure Kubernetes Service (AKS) w Twoim środowisku Azure.
Kategoria
Zarządzanie zasobami
Zapytanie
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
Maszyny wirtualne
Maszyny wirtualne platformy Azure to jeden z kilku typów na żądanie skalowalnych zasobów obliczeniowych, które platforma Azure oferuje. Zazwyczaj wybierasz maszynę wirtualną, gdy potrzebujesz większej kontroli nad środowiskiem obliczeniowym niż inne opcje.
Maszyna wirtualna Azure umożliwia swobodne korzystanie z wirtualizacji bez konieczności kupowania i utrzymywania fizycznego sprzętu potrzebnego do jej działania. Jednak nadal musisz obsługiwać maszynę wirtualną, wykonując zadania, takie jak konfigurowanie, stosowanie poprawek i instalowanie na nim oprogramowania.
Powiązane zasoby:
- strona produktu Maszyny wirtualne
- Cennik maszyny wirtualnej
- Dokumentacja maszyny wirtualnej
- Usługi Azure dla elastycznego i skalowalnego przetwarzania na żądanie
Zwolnienie maszyn wirtualnych
Zalecenie: Cofnij przydział maszyn wirtualnych, aby uniknąć nieużywanych opłat za zasoby obliczeniowe. Unikaj zatrzymywania maszyn wirtualnych bez ich dealokacji.
Informacje o nieaktywnych maszynach wirtualnych
Maszyny wirtualne mają dwa stany nieaktywne: Zatrzymano i Dezaktywowano.
Zatrzymane maszyny wirtualne zostały zamknięte z poziomu systemu operacyjnego (na przykład za pomocą polecenia Zamknij). Zatrzymane maszyny wirtualne są wyłączone, ale platforma Azure nadal rezerwuje zasoby obliczeniowe, takie jak procesor CPU i pamięć. Ponieważ zasoby obliczeniowe są zarezerwowane i nie są dostępne do użycia z innymi maszynami wirtualnymi, te maszyny wirtualne nadal generują opłaty za obliczenia.
Maszyny wirtualne, którym cofnięto przydział, są zatrzymywane za pomocą interfejsów API zarządzania chmurą w portalu Azure, CLI, PowerShell lub innym narzędziu klienckim. Kiedy maszyna wirtualna jest zdezaktywowana, Azure zwalnia odpowiednie zasoby obliczeniowe. Ponieważ zasoby obliczeniowe są zwalniane, te maszyny wirtualne nie generują opłat za obliczenia. Należy jednak pamiętać, że zarówno zatrzymane, jak i deaktywowane maszyny wirtualne nadal powodują naliczanie opłat niezwiązanych z obliczeniami, takich jak opłaty za przechowywanie danych na dyskach.
Identyfikowanie zatrzymanych maszyn wirtualnych
Użyj następującego zapytania usługi Azure Resource Graph (ARG), aby zidentyfikować wyłączone maszyny wirtualne, które nie zostały zdealokowane. Pobiera szczegółowe informacje o stanie zasilania, lokalizacji, grupie zasobów i identyfikatorze subskrypcji.
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
Zastosowanie rabatów na zobowiązania
Zalecenie: Skorzystaj z rabatów za zobowiązanie, aby zaoszczędzić do 72% w porównaniu z cenami z cennika.
Informacje o rabatach na zobowiązania
Rabaty na zobowiązania to zachęty finansowe oferowane organizacjom, które zobowiązują się do korzystania z usług platformy Azure przez określony okres lub okres, zazwyczaj jeden lub trzy lata. Zgadzając się na stałą kwotę zużycia lub wydatków na dany okres, organizacje mogą korzystać ze znaczących rabatów (do 72%) w porównaniu z cenami listowymi. Rabaty są stosowane do kwalifikujących się zasobów, pomagając organizacjom zaoszczędzić na kosztach chmury, zapewniając jednocześnie elastyczność i przewidywalność budżetowania.
Aby dowiedzieć się więcej na temat rabatów na zobowiązania, zapoznaj się z możliwością optymalizacji stawek w .
Pomiar pokrycia rabatu z tytułu zobowiązania na maszynę wirtualną
Użyj następującego zapytania z centrum FinOps, aby zmierzyć ogólne pokrycie rabatu zobowiązań dla maszyn wirtualnych.
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
Użyj następującego zapytania, aby określić kosztów przypadających na maszynę wirtualną, uwzględniając zniżki z tytułu zobowiązań.
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
Aby dowiedzieć się więcej na temat hubów FinOps, zapoznaj się z hubami FinOps.
Zapytanie — szczegóły dotyczące zestawu skalowania maszyn wirtualnych
To zapytanie analizuje zestawy skalowania maszyn wirtualnych w środowisku Azure na podstawie ich SKU, priorytetu maszyn wirtualnych typu spot i polityki mieszanych priorytetów. Udostępnia szczegółowe informacje na temat strategii optymalizacji kosztów i zarządzania zasobami.
Kategoria
Zarządzanie zasobami
Zapytanie
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
Zapytanie — analiza typu procesora maszyny wirtualnej
To zapytanie identyfikuje typ procesora (ARM, AMD lub Intel) używany przez maszyny wirtualne w środowisku platformy Azure. Pomaga to zrozumieć dystrybucję maszyn wirtualnych w różnych architekturach procesora, co jest przydatne do optymalizacji wydajności obciążeń i wydajności kosztów.
Kategoria
Zarządzanie zasobami
Zapytanie
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
Prześlij opinię
Daj nam znać, jak nam idzie, wystawiając krótką recenzję. Te recenzje służą do ulepszania i rozszerzania narzędzi i zasobów FinOps.
Jeśli szukasz czegoś konkretnego, zagłosuj na istniejący lub utwórz nowy pomysł. Podziel się pomysłami z innymi osobami, aby uzyskać więcej głosów. Skupiamy się na pomysłach z największą większością głosów.
Powiązana zawartość
Powiązane zasoby:
Powiązane produkty:
Powiązane rozwiązania:
- Raporty usługi Power BI dla zestawu narzędzi FinOps
- Centra FinOps
- Skoroszyty FinOps
- Aparat optymalizacji