Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird eine Sammlung bewährter FinOps-Methoden für Computedienste beschrieben. Es bietet Anleitungen zum Optimieren von Kosten, zur Verbesserung der Effizienz und zum Gewinnen von Einblicken in Ihre Computeressourcen in Azure. Die Methoden werden basierend auf dem Typ des Computediensts kategorisiert, z. B. virtuelle Computer (VM), Azure Kubernetes Service (AKS) und Azure Functions.
Azure Kubernetes-Dienst
Azure Kubernetes Service (AKS) vereinfacht die Bereitstellung und Verwaltung von containerisierten Anwendungen. Es bietet serverlose Kubernetes, eine integrierte CI/CD-Erfahrung und Sicherheits- und Governance auf Unternehmensniveau.
Verwandte Ressourcen:
- Azure Kubernetes Service Produktseite
- Azure Kubernetes Service Preise
- Dokumentation zu Azure Kubernetes Service
- AKS-Basisarchitektur
Abfrage: Details zum AKS-Cluster
Diese ARG-Abfrage ruft detaillierte Informationen zu AKS-Clustern in Ihrer Azure-Umgebung ab.
Kategorie
Ressourcenverwaltung
Abfrage
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
Verwenden von Spot-VMs für AKS-Cluster
Empfehlung: Verwenden Sie Spot-VMs für AKS-Agentpools, um die Berechnungskosten für fehlertolerante, unterbrechungsfähige Workloads zu reduzieren.
Informationen zu Spot-VMs in AKS
Spot VMs nutzen nicht verwendete Azure Kapazität zu erheblich reduzierten Kosten. Wenn Azure die Kapazität wieder benötigt, entfernt die Azure-Infrastruktur Spot-VMs. Spot-VMs sind nützlich für Workloads, die Unterbrechungen verarbeiten können, z. B. Batchverarbeitungsaufträge, Entwicklungs-/Testumgebungen und große Computeworkloads.
AKS-Cluster, die die automatische Skalierung verwenden, spot-VMs jedoch nicht nutzen, zahlen möglicherweise mehr als erforderlich. Indem Sie Spot-VMs für unterbrechungsfähige Workloads aktivieren, können Sie die Berechnungskosten erheblich reduzieren. Diese Empfehlung gilt nur für Cluster, die Workloads ausführen, die Unterbrechungen tolerieren können. Nicht alle Workloads eignen sich für Spot-VMs.
Note
FinOps-Hubs können AKS-Cluster automatisch ohne Spot-VMs als Opt-In-Empfehlung identifizieren. Erfahren Sie mehr.
Abfrage: AKS-Cluster ohne Spot-VMs
Verwenden Sie die folgende ARG-Abfrage, um AKS-Cluster mit aktivierter automatischer Skalierung zu identifizieren, die keine Spot-VMs verwenden.
Kategorie
Optimization
Abfrage
resources
| where type == 'microsoft.containerservice/managedclusters'
| mvexpand AgentPoolProfiles = properties.agentPoolProfiles
| where AgentPoolProfiles.enableAutoScaling == true
and isnull(AgentPoolProfiles.scaleSetPriority)
| project
ResourceId = id,
AKSName = name,
ProfileName = tostring(AgentPoolProfiles.name),
VMSize = tostring(AgentPoolProfiles.vmSize),
NodeCount = tostring(AgentPoolProfiles.['count']),
MinCount = tostring(AgentPoolProfiles.minCount),
MaxCount = tostring(AgentPoolProfiles.maxCount),
Region = location,
ResourceGroupName = resourceGroup,
SubscriptionId = subscriptionId
Virtuelle Computer
Virtuelle Azure-Computer (VMs) sind eine von mehreren Arten von On-Demand-, skalierbaren Computerressourcen, die Azure bietet. In der Regel wählen Sie einen virtuellen Computer aus, wenn Sie mehr Kontrolle über die Computerumgebung benötigen als die anderen Auswahlmöglichkeiten.
Ein virtueller Azure-Computer bietet Ihnen die Flexibilität der Virtualisierung, ohne Zeit und Geld für den Kauf und die Verwaltung der Hardware aufwenden zu müssen, mit der der virtuelle Computer betrieben wird. Sie müssen den virtuellen Computer jedoch weiterhin verwalten, indem Sie Aufgaben ausführen, z. B. das Konfigurieren, Patchen und Installieren der darauf ausgeführten Software.
Verwandte Ressourcen:
- Produktseite virtueller Computer
- Preise für virtuelle Computer
- Dokumentation zu virtuellen Computern
- Azure-Dienste für on-demand, skalierbare Compute
Freigeben von virtuellen Computern
Empfehlung: Freigeben von virtuellen Computern, um Kosten für nicht verwendeten Compute zu vermeiden. Vermeiden Sie das Beenden von virtuellen Computern, ohne sie zu verlagern.
Informationen zu inaktiven VMs
VMs weisen zwei inaktive Zustände auf: „Beendet“ und „Freigegeben“.
Gestoppte VMs wurden vom Betriebssystem heruntergefahren (z. B. mithilfe des Befehls "Herunterfahren"). Beendete VMs werden ausgeschaltet, aber Azure reserviert weiterhin Computeressourcen wie CPU und Arbeitsspeicher. Da Rechenressourcen reserviert sind und daher nicht für die Nutzung durch andere virtuelle Maschinen zur Verfügung stehen, entstehen für diese virtuellen Computer weiterhin Rechenkosten.
Deallocated VMs werden über Cloudverwaltungs-APIs im Azure-Portal, CLI, PowerShell oder einem anderen Clienttool beendet. Wenn ein virtueller Computer zugeordnet wird, gibt Azure die entsprechenden Computeressourcen frei. Da Computeressourcen freigegeben werden, verursachen diese virtuellen Computer keine Berechnungsgebühren; Es ist jedoch wichtig zu beachten, dass sowohl angehaltene als auch deallocierte VMs weiterhin Gebühren verursachen, die nicht mit der Berechnung verbunden sind, z. B. Speichergebühren von Datenträgern.
Note
FinOps-Hubs können automatisch gestoppte VMs identifizieren, die nicht freigegeben sind. Erfahren Sie mehr.
Identifizieren gestoppter VMs
Verwenden Sie die folgende Azure Resource Graph (ARG)-Abfrage, um beendete VMs zu identifizieren, die nicht freigegeben sind. Es ruft Details zu ihrem Energiezustand, Standort, Ressourcengruppe und Abonnement-ID ab.
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
Nutzung von Verpflichtungsrabatten
Empfehlung: Verwenden Sie Verpflichtungsrabatte, um bis zu 72% im Vergleich zu Listenkosten zu sparen.
Informationen zu Verpflichtungsrabatten
Verpflichtungsrabatte sind finanzielle Anreize für Organisationen, die sich für einen bestimmten Zeitraum oder eine bestimmte Laufzeit für azure-Dienste verpflichten, in der Regel ein oder drei Jahre. Durch die Zustimmung zu einem festen Nutzungs- oder Ausgabenbetrag (Kosten) für die Laufzeit können Organisationen von erheblichen Rabatten (bis zu 72%) im Vergleich zu Listenpreisen profitieren. Rabatte werden auf berechtigte Ressourcen angewendet und helfen Organisationen dabei, ihre Cloudkosten zu sparen und gleichzeitig Flexibilität und Vorhersehbarkeit in der Budgetierung zu bieten.
Weitere Informationen zu Verpflichtungsrabatten finden Sie in der Rate-Optimierungsfunktion.
Messen der Prepaidtarifrabatte für virtuelle Computer
Verwenden Sie die folgende FinOps-Hubabfrage, um die Gesamtabdeckung des VM-Verpflichtungsrabatts zu messen.
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
Verwenden Sie die folgende Abfrage, um die Kostenaufschlüsselung pro VM zu messen, einschließlich der Abdeckung von Verpflichtungsrabatten.
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
Weitere Informationen zu FinOps-Hubs finden Sie in den FinOps-Hubs.
Abfrage: Details zum Skalierungssatz für virtuelle Computer
Diese Abfrage analysiert in Ihrer Azure-Umgebung die Virtual Machine Scale Sets anhand deren SKU, der Priorität als Spot-VM und der Prioritätsmixrichtlinie. Sie bietet Einblicke in Kostenoptimierungs- und Ressourcenmanagementstrategien.
Kategorie
Ressourcenverwaltung
Abfrage
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
Zu verwalteten Datenträgern migrieren
Empfehlung: Migrieren von VMs mit nicht verwalteten Datenträgern zu verwalteten Datenträgern, um die Zuverlässigkeit zu verbessern, die Verwaltung zu vereinfachen und sich auf die Einstellung von nicht verwalteten Datenträgern vorzubereiten.
Informationen zu nicht verwalteten Datenträgern
Unmanaged disks speichern VHD-Dateien als Seitenblobs in Azure Storage Konten, sodass Sie die Speicherkapazität, Leistung und Sicherheit selbst verwalten müssen. Verwaltete Datenträger vereinfachen die Datenträgerverwaltung, indem sie die Verwaltung des Speicherkontos für Sie übernehmen und eine höhere Zuverlässigkeit mit Verfügbarkeitssätzen, eine präzisere Zugriffssteuerung sowie Unterstützung für neuere Funktionen wie Datenträgerverschlüsselung und Bursting bieten. Microsoft hat die Einstellung von nicht verwalteten Datenträgern angekündigt, sodass die Migration zu verwalteten Datenträgern sowohl eine Kostenoptimierung als auch ein Complianceschritt ist.
Note
FinOps-Hubs können virtuelle Computer automatisch mithilfe von nicht verwalteten Datenträgern identifizieren. Erfahren Sie mehr.
Identifizieren von virtuellen Computern mit nicht verwalteten Datenträgern
Verwenden Sie die folgende ARG-Abfrage, um VMs zu identifizieren, die noch nicht verwaltete Datenträger verwenden.
resources
| where type =~ 'microsoft.compute/virtualmachines'
| where isnull(properties.storageProfile.osDisk.managedDisk)
| project
ResourceId = tolower(id),
ResourceName = name,
OsDiskVhd = tostring(properties.storageProfile.osDisk.vhd.uri),
Region = location,
ResourceGroupName = resourceGroup,
SubscriptionId = subscriptionId
Abfrage: Analyse des Prozessortyps virtueller Computer
Diese Abfrage identifiziert den Prozessortyp (ARM, AMD oder Intel), der von VMs in Ihrer Azure-Umgebung verwendet wird. Sie hilft dabei, die Verteilung von VMs über verschiedene Prozessorarchitekturen zu verstehen, was nützlich ist, um die Leistung der Arbeitslast und die Kosteneffizienz zu optimieren.
Kategorie
Ressourcenverwaltung
Abfrage
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
Verwenden von Azure-Hybridvorteil für Windows VMs
Empfehlung: Aktivieren Sie Azure-Hybridvorteil für Windows VMs, um die Lizenzierungskosten durch Die Verwendung vorhandener lokaler Windows Server-Lizenzen zu reduzieren.
Informationen zu Azure-Hybridvorteil für Windows
Mit Azure-Hybridvorteil können Sie Ihre lokalen Windows-Server-Lizenzen mit Software Assurance oder einem Windows Server-Abonnement verwenden, um Windows-VMs in Azure zu geringeren Kosten auszuführen. Anstatt für eine vollständige Windows Server Lizenz mit jedem virtuellen Computer zu bezahlen, können Sie Ihre vorhandenen Lizenzen mitbringen und nur die Basisberechnungskosten bezahlen. Diese Empfehlung gilt nur, wenn Ihre Organisation über lokale Windows Server Lizenzen verfügt.
Note
FinOps Hubs können automatisch Windows VMs identifizieren, ohne Azure-Hybridvorteil als Opt-In-Empfehlung zu verwenden. Erfahren Sie mehr.
Abfrage: Windows VMs ohne Azure-Hybridvorteil
Verwenden Sie die folgende ARG-Abfrage, um Windows VMs und Skalierungssätze zu identifizieren, die keine Azure-Hybridvorteil nutzen. Die Abfrage schließt Dev-/Testabonnements aus, die bereits eine ermäßigte Lizenzierung haben.
Kategorie
Optimization
Abfrage
resourcecontainers
| where type =~ 'Microsoft.Resources/subscriptions'
| where tostring(properties.subscriptionPolicies.quotaId) !has 'MSDNDevTest_2014-09-01'
| project SubscriptionName = name, subscriptionId
| join (
resources
| where type =~ 'microsoft.compute/virtualmachines'
or type =~ 'microsoft.compute/virtualMachineScaleSets'
| where tostring(properties.storageProfile.osDisk.osType) == 'Windows'
or tostring(properties.virtualMachineProfile.storageProfile.osDisk.osType) == 'Windows'
| where tostring(properties.['licenseType']) !has 'Windows'
and tostring(properties.virtualMachineProfile.['licenseType']) != 'Windows_Server'
| project
ResourceId = id,
ResourceName = name,
VMSize = tostring(properties.hardwareProfile.vmSize),
LicenseType = tostring(properties.['licenseType']),
Region = location,
ResourceGroupName = resourceGroup,
subscriptionId
) on subscriptionId
| project
ResourceId,
ResourceName,
VMSize,
LicenseType,
Region,
ResourceGroupName,
SubscriptionName,
SubscriptionId = subscriptionId
Verwenden von Azure-Hybridvorteil für SQL-VMs
Empfehlung: Aktivieren Sie Azure-Hybridvorteil für SQL Server virtuellen Computer, um die Lizenzierungskosten durch Die Verwendung vorhandener lokaler SQL Server-Lizenzen zu reduzieren.
Informationen zu Azure-Hybridvorteil für SQL-VMs
Azure-Hybridvorteil für SQL Server ermöglicht es Ihnen, Ihre lokalen SQL Server-Lizenzen mit Software Assurance zu verwenden, um SQL Server-VMs in Azure zu geringeren Kosten auszuführen. Dieser Vorteil gilt für Standard- und Enterprise-Editionen (Entwickler- und Express-Editionen sind bereits kostenlos und benötigen keine Azure-Hybridvorteil). Diese Empfehlung gilt nur, wenn Ihre Organisation über lokale SQL Server Lizenzen mit Software Assurance verfügt.
Note
FinOps Hubs können SQL-VMs automatisch identifizieren, ohne Azure-Hybridvorteil als Opt-In-Empfehlung zu verwenden. Erfahren Sie mehr.
Abfrage: SQL-VMs ohne Azure-Hybridvorteil
Verwenden Sie die folgende ARG-Abfrage, um SQL Server VMs zu identifizieren, die keine Azure-Hybridvorteil nutzen. Die Abfrage schließt Dev-/Testabonnements und Developer/Express-Editionen aus.
Kategorie
Optimization
Abfrage
resourcecontainers
| where type =~ 'Microsoft.Resources/subscriptions'
| where tostring(properties.subscriptionPolicies.quotaId) !has 'MSDNDevTest_2014-09-01'
| project SubscriptionName = name, subscriptionId
| join (
resources
| where type =~ 'Microsoft.SqlVirtualMachine/SqlVirtualMachines'
and tostring(properties.['sqlServerLicenseType']) != 'AHUB'
| project
ResourceId = id,
ResourceName = name,
LicenseType = tostring(properties.['sqlServerLicenseType']),
SQLVersion = tostring(properties.['sqlImageOffer']),
SQLSKU = tostring(properties.['sqlImageSku']),
Region = location,
ResourceGroupName = resourceGroup,
subscriptionId
) on subscriptionId
| join (
resources
| where type =~ 'Microsoft.Compute/virtualMachines'
| project
ResourceName = tolower(name),
VMSize = tostring(properties.hardwareProfile.vmSize),
subscriptionId
) on ResourceName
| where SQLSKU != 'Developer' and SQLSKU != 'Express'
| project
ResourceId,
ResourceName,
VMSize,
LicenseType,
SQLVersion,
SQLSKU,
Region,
ResourceGroupName,
SubscriptionName,
SubscriptionId = subscriptionId
Feedback senden
Lassen Sie uns mit einer kurzen Bewertung wissen, wie wir abschneiden. Wir verwenden diese Rezensionen, um FinOps-Tools und -Ressourcen zu verbessern und zu erweitern.
Wenn Sie nach etwas Spezifischem suchen, wählen Sie eine vorhandene Idee aus, oder erstellen Sie eine neue Idee. Teilen Sie Ideen mit anderen, um mehr Stimmen zu erhalten. Wir konzentrieren uns auf Ideen mit den meisten Stimmen.
Zugehöriger Inhalt
Verwandte Ressourcen:
Verwandte Produkte:
Verwandte Lösungen: