Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se describe una colección de prácticas probadas de FinOps para los servicios de proceso. Proporciona instrucciones sobre cómo optimizar los costos, mejorar la eficiencia y obtener información sobre los recursos de proceso en Azure. Los procedimientos se clasifican en función del tipo de servicio de proceso, como máquinas virtuales (VM), Azure Kubernetes Service (AKS) y Azure Functions.
Azure Kubernetes Service
En la sección siguiente se proporciona una consulta de Azure Resource Graph (ARG) para clústeres de AKS. La consulta le ayuda a obtener información sobre las máquinas virtuales.
Consulta: clúster de AKS
Esta consulta de ARG recupera información detallada sobre los clústeres de AKS en el entorno de Azure.
Categoría
Administración de recursos
Consulta
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
Máquinas virtuales
Las máquinas virtuales (VM) de Azure son uno de los distintos tipos de recursos informáticos a petición y escalables que Azure ofrece. Normalmente, se elige una máquina virtual cuando se necesita más control sobre el entorno informático que las otras opciones que ofrecen.
Una máquina virtual de Azure proporciona la flexibilidad de virtualización sin tener que comprar y mantener el hardware físico que lo ejecuta. Sin embargo, debe mantener la máquina virtual realizando tareas, como configurar, aplicar revisiones e instalar el software que se ejecuta en ella.
Recursos relacionados
- Página del producto de máquinas virtuales
- Precios de máquinas virtuales
- Documentación de la máquina virtual
- Servicios de Azure para servicios informáticos a petición, escalables
Desasignar máquinas virtuales
Recomendación: desasigne las máquinas virtuales para evitar cargos de proceso sin usar. Evite detener las máquinas virtuales sin desasignarlos.
Acerca de las máquinas virtuales inactivas
Las máquinas virtuales tienen dos estados inactivos: Detenido y Desasignado.
Las máquinas virtuales detenidas se apagaron desde el sistema operativo (por ejemplo, mediante el comando Apagar ). Las máquinas virtuales detenidas están apagadas, pero Azure todavía reserva recursos de proceso, como CPU y memoria. Dado que los recursos de proceso están reservados y no están disponibles para su uso con otras máquinas virtuales, estas máquinas virtuales siguen incurriendo en cargos de proceso.
Las máquinas virtuales desasignadas se detienen a través de las API de administración en la nube en Azure Portal, la CLI, PowerShell u otra herramienta de cliente. Cuando se desasigna una máquina virtual, Azure libera los recursos de proceso correspondientes. Dado que se liberan recursos de proceso, estas máquinas virtuales no incurren en cargos de proceso; Sin embargo, es importante tener en cuenta que las máquinas virtuales detenidas y desasignadas siguen incurr en cargos no relacionados con el proceso, como los cargos de almacenamiento de los discos.
Identificación de máquinas virtuales detenidas
Use la siguiente consulta de Azure Resource Graph (ARG) para identificar las máquinas virtuales detenidas que no están desasignadas. Recupera detalles sobre su estado de energía, ubicación, grupo de recursos e identificador de suscripción.
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
Uso de descuentos de compromiso
Recomendación: Use descuentos de compromiso para ahorrar hasta un 72 % en comparación con los costos de lista.
Acerca de los descuentos de compromiso
Los descuentos de compromiso son incentivos financieros ofrecidos a las organizaciones que se comprometen a usar servicios de Azure durante un período o período especificados, normalmente uno o tres años. Al aceptar una cantidad fija de uso o gasto (costo) para el término, las organizaciones pueden beneficiarse de descuentos significativos (hasta 72%) en comparación con los precios de lista. Los descuentos se aplican a los recursos aptos, lo que ayuda a las organizaciones a ahorrar en sus costos en la nube, a la vez que proporcionan flexibilidad y previsibilidad en su presupuesto.
Para más información sobre los descuentos de compromiso, consulte la Funcionalidad optimización de velocidad.
Medición de la cobertura de descuento de compromiso de máquina virtual
Use la siguiente consulta de FinOps Hub para medir la cobertura general del descuento por compromiso de máquina virtual.
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
Use la siguiente consulta para medir el desglose de costos por máquina virtual, incluida la cobertura de descuentos de compromiso.
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
Para más información sobre los centros de FinOps, consulte FinOps Hubs.
Consulta: detalles del conjunto de escalado de máquinas virtuales
Esta consulta analiza los conjuntos de escalado de máquinas virtuales en el entorno de Azure en función de su SKU, la prioridad de máquina virtual puntual y la directiva de combinación de prioridades. Proporciona información sobre la optimización de costos y las estrategias de administración de recursos.
Categoría
Administración de recursos
Consulta
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
Consulta: análisis de tipos de procesador de máquinas virtuales
Esta consulta identifica el tipo de procesador (ARM, AMD o Intel) que usan las máquinas virtuales en el entorno de Azure. Ayuda a comprender la distribución de máquinas virtuales en distintas arquitecturas de procesador, lo que resulta útil para optimizar el rendimiento de la carga de trabajo y la eficiencia de los costos.
Categoría
Administración de recursos
Consulta
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
Proporcionar comentarios
Déjanos saber cómo lo estamos haciendo con una breve revisión. Usamos estas revisiones para mejorar y expandir herramientas y recursos de FinOps.
Si busca algo específico, vote por una idea existente o cree una idea nueva. Comparta ideas con otros usuarios para obtener más votos. Nos centramos en las ideas con la mayoría de los votos.
Contenido relacionado
Recursos relacionados
Productos relacionados:
Soluciones relacionadas:
- Informes de Power BI del kit de herramientas de FinOps
- Centros de FinOps
- Cuadernos de FinOps
- Motor de optimización