识别并消除浪费
使用 Azure Cost Management 和 Advisor 建议查找闲置 VM、未连接的磁盘、过度预配的服务和僵尸资源,然后将其停用。
识别并消除浪费 是 CoddyKit 上的免费 Azure Fundamentals 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Azure Fundamentals 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Azure Fundamentals 课程共包含 4 节课。
云资源浪费:隐藏的成本驱动因素
研究持续表明,组织在闲置、过度预配或被遗忘的资源上浪费了云支出的 25–35%。在 Azure 中,常见的浪费来源包括全天运行但 CPU 使用率接近零的 VM、删除 VM 后遗留的未连接托管磁盘、孤立的公共 IP 地址以及未使用的应用服务计划。识别并消除这些浪费,是任何 FinOps 实践中最先应采取且 ROI 最高的步骤。
Azure Advisor 成本建议
Azure Advisor 会持续分析您的资源利用率,并自动生成Cost 建议。常见建议包括:调整规格或关闭利用率不足的 VM(连续 7 天 CPU 利用率低于 5% 或内存利用率低于 2%)、为持续运行的 VM 购买预留实例、删除未连接的公共 IP 地址,以及移除处于闲置状态的应用程序网关实例。每条建议都会显示预计每月节省金额,便于您根据影响确定优先级。
# List Advisor cost recommendations via CLI
az advisor recommendation list \
--category Cost \
--query '[].{Resource:resourceName, Impact:impact, Savings:extendedProperties.annualSavingsAmount}' \
--output table查找闲置和利用率不足的 VM
Azure Monitor 会收集每个 VM 的CPU 百分比和网络入站/出站指标。CPU 持续低于 5% 的 VM 很适合进行规格调整或关闭。使用 Azure Monitor 中的虚拟机见解功能,可以查看整个 VM 群体在 24 小时、7 天或 30 天内的 CPU 和内存利用率。针对利用率不足 VM 的 Advisor 建议会直接链接到性能图表,便于您在采取操作前确认这一模式。
# Query average CPU for a VM over the last 7 days
az monitor metrics list \
--resource /subscriptions/<sub>/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myVM \
--metric 'Percentage CPU' \
--interval PT1H \
--start-time 2024-06-01T00:00:00Z \
--end-time 2024-06-08T00:00:00Z \
--aggregation Average未连接的磁盘和快照
删除 VM 时,如果未选择同时删除其磁盘,托管磁盘仍会保留并持续产生费用。在 Azure 门户中,将磁盘筛选为磁盘状态:Unattached,即可找到这些孤立磁盘。同样,为备份或迁移而创建的旧快照也经常被遗忘。快照存储比托管磁盘存储便宜,但在大型订阅中,遗忘一年的快照每年累积的费用可能达到数千美元。
# Find all unattached managed disks in a subscription
az disk list \
--query '[?diskState == `Unattached`].{Name:name, RG:resourceGroup, SizeGB:diskSizeGb}' \
--output table孤立的公共 IP 地址和网络接口
Azure 中的公共 IP 地址即使未与正在运行的资源关联,也会产生费用。当删除 VM 或负载均衡器时,其公共 IP 和网络接口可能仍会保留。在门户中,将公共 IP 地址筛选为关联到:None,然后删除不再需要的地址。同样,未连接到任何 VM 或服务的孤立网络接口也可以安全移除。这些费用单项金额不高,但在数百个资源之间会不断累积。
# Find unassociated public IP addresses
az network public-ip list \
--query '[?ipConfiguration == null].{Name:name, RG:resourceGroup, SKU:sku.name}' \
--output table僵尸资源:暂存和开发环境
僵尸资源是指已预配但随后被遗忘的长期存在的暂存、测试或概念验证环境。与闲置的生产 VM 不同,这些资源可能在工作时间有中等利用率,但已不服务于任何活动项目。请实施资源标记策略,要求每个资源都包含 Environment 和 Project 标记,然后针对 Environment=Dev 或 Environment=Test 且已超过 90 天的资源安排自动警报。
# Find resources tagged as Dev that are over 90 days old (approximate via createdTime)
az resource list \
--tag Environment=Dev \
--query '[].{Name:name, Type:type, RG:resourceGroup}' \
--output table开发和测试 VM 的自动关机
Azure VM 支持自动关机功能,可在每天配置的时间自动停止 VM。请在所有开发和测试 VM 上启用此功能,确保它们不会在夜间或周末运行。例如,全天候运行的开发 VM 每周计费 168 小时;如果将其配置为工作日每天 18:00 自动关机、08:00 自动启动,则每周只运行50 小时,计算成本约可节省 70%。
# Enable auto-shutdown at 18:00 UTC on a dev VM
az vm auto-shutdown \
--resource-group myRG \
--name myDevVM \
--time 1800 \
--email admin@contoso.comAzure 成本管理:异常检测
Azure 成本管理包含Anomaly Detection 功能,可使用机器学习识别支出的异常峰值。当订阅或资源组的成本显著偏离预测模式时,例如有人意外部署了 GPU VM,或忘记删除 ExpressRoute 网关,成本管理会通过电子邮件发送异常警报。设置异常警报是一项快速见效的措施,可以在失控的成本出现在月度账单之前及时发现问题。
# Create a cost anomaly alert
az costmanagement alert create \
--name 'AnomalyAlert' \
--scope '/subscriptions/<subscriptionId>' \
--type 'Anomaly' \
--contact-emails 'finance@contoso.com'调整存储和数据库层级的规格
并非所有浪费都与计算有关。在 Business Critical 层级上预配、但只运行简单读密集型查询的Azure SQL 数据库,其性能可能与 General Purpose 层级完全相同,而成本只有一半。很少访问的Blob Storage 数据应使用生命周期管理策略,从 Hot 层级移至Cool 或 Archive 层级。Azure Advisor 会同时提供数据库和存储规格调整建议,以及计算资源相关建议。
# Create a Blob lifecycle policy to move data to Cool tier after 30 days
az storage account management-policy create \
--account-name mystorageacct \
--resource-group myRG \
--policy @- << 'POLICY'
{
'rules': [{
'name': 'MoveOldDataToCool',
'type': 'Lifecycle',
'definition': {
'actions': { 'baseBlob': { 'tierToCool': { 'daysAfterModificationGreaterThan': 30 } } },
'filters': { 'blobTypes': ['blockBlob'] }
}
}]
}
POLICY建立消除浪费的待办列表
请将成本优化视为持续的工程实践,而不是一次性活动。在 Azure DevOps 或 Jira 中创建FinOps 待办列表,每周根据 Advisor 建议和成本异常警报生成待办项。将每项资源浪费任务分配给负责团队,并设置目标解决日期。跟踪已实现的节省与已识别的节省,以衡量 FinOps 的成熟度。安排工程负责人和财务人员参加每月成本评审,让整个组织持续关注消除浪费。
通过治理防止未来浪费
预防比补救更具成本效益。使用Azure Policy,在未经批准的情况下禁止创建昂贵的 VM SKU(例如 GPU 或 M 系列),要求所有资源都包含 Environment 和 ExpiryDate 标记,并在开发订阅中新创建的 VM 上自动启用自动关机。将这些策略与设置为月度分配额 80% 和 100% 的预算警报结合使用,以便团队在发生超支之前收到通知。
快速检查
测试您对本课 Microsoft Azure Fundamentals (AZ-900) 概念的理解。
课程回顾
本课介绍了:Azure Advisor 会为闲置 VM、未连接磁盘和过度预配的服务提供可执行的成本建议;开发 VM 的自动关机可将计算支出降低 70%;而结合标记的治理策略则可防止未来浪费不断累积。接下来,我们将学习规格调整技术和自动缩放策略。
常见问题解答
「识别并消除浪费」课时是免费的吗?
是的 — 「识别并消除浪费」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Azure Fundamentals 课程的其余内容,请升级到 CoddyKit PRO。 Azure Fundamentals 课程共包含 4 节课。
「识别并消除浪费」这节课中我会学到什么?
使用 Azure Cost Management 和 Advisor 建议查找闲置 VM、未连接的磁盘、过度预配的服务和僵尸资源,然后将其停用。 你通过在浏览器中直接运行的动手代码来练习 Azure Fundamentals,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Azure Fundamentals 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Azure Fundamentals 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「识别并消除浪费」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Azure Fundamentals 课中编写并运行代码吗?
能。每节 Azure Fundamentals 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。