🚀 快速安装
复制以下命令并运行,立即安装此 Skill:
npx @anthropic-ai/skills install microsoft/azure-skills/azure-cost-optimization
💡 提示:需要 Node.js 和 NPM
Azure 成本优化技能
分析 Azure 订阅,通过清理孤立资源、调整资源规模以及基于实际使用数据提供优化建议,从而识别成本节约机会。
何时使用此技能
当用户请求执行以下操作时,使用此技能:
- 优化 Azure 成本或减少支出
- 分析 Azure 订阅以节约成本
- 生成成本优化报告
- 查找孤立或未使用的资源
- 调整 Azure 虚拟机、容器或服务的规模
- 识别他们在 Azure 中哪里超支了
- 专门优化 Redis 成本 – 有关 Redis 的专项分析,请参阅 Azure Redis 成本优化
说明
在与用户的对话中,遵循以下步骤:
步骤 0:验证前提条件
在开始之前,验证这些工具和权限是否可用:
所需工具:
- 已安装并已验证身份的 Azure CLI(
az login) - Azure CLI 扩展:
costmanagement、resource-graph - 已安装 Azure Quick Review (azqr) – 详情请参阅 Azure Quick Review
所需权限:
- 成本管理读取者角色
- 监控读取者角色
- 订阅/资源组上的读取者角色
验证命令:
az --version
az account show
az extension show --name costmanagement
azqr version
步骤 1:加载最佳实践
获取 Azure 成本优化最佳实践,为建议提供依据:
// 使用 Azure MCP 最佳实践工具
mcp_azure_mcp_get_azure_bestpractices({
intent: "获取成本优化最佳实践",
command: "get_bestpractices",
parameters: { resource: "cost-optimization", action: "all" }
})
步骤 1.5:Redis 专项分析(按需)
如果用户特别请求 Redis 成本优化,请使用专门的 Redis 技能:
📋 参考:Azure Redis 成本优化
何时使用 Redis 专项分析:
- 用户提到“Redis”、“Azure Cache for Redis”或“Azure Managed Redis”
- 重点是 Redis 资源优化,而不是一般的订阅分析
- 用户想要 Redis 特有的建议(SKU 降级、失败的缓存等)
主要功能:
- 交互式订阅筛选(前缀、ID 或“所有订阅”)
- Redis 特有的优化规则(失败的缓存、规模过大的层级、缺少标签)
- 用于 Redis 成本分析的预建报告模板
- 使用
redis_list命令
可用的报告模板:
注意:对于一般性的订阅范围成本优化(包括 Redis),请继续执行步骤 2。对于仅专注于 Redis 的分析,请遵循 Redis 专项参考文档中的说明。
步骤 1.6:选择分析范围(针对 Redis 专项分析)
如果正在执行 Redis 成本优化,请让用户选择他们的分析范围:
向用户提供以下选项:
- 特定订阅 ID – 分析单个订阅
- 订阅名称 – 使用显示名称而非 ID
- 订阅前缀 – 分析所有以指定前缀开头的订阅(例如,“CacheTeam”)
- 我的所有订阅 – 扫描所有可访问的订阅
- 整个租户 – 分析整个组织
等待用户响应后再进行步骤 2。
步骤 2:运行 Azure Quick Review
运行 azqr 查找孤立资源(即时成本节约):
📋 参考:Azure Quick Review – 运行 azqr 扫描的详细说明
// 使用 Azure MCP extension_azqr 工具
extension_azqr({
subscription: "<订阅ID>",
"resource-group": "<资源组名>" // 可选
})
在 azqr 结果中需要注意什么:
- 孤立资源:未附加的磁盘、未使用的网卡、空闲的 NAT 网关
- 过度预配资源:过长的保留期、规模过大的 SKU
- 缺少成本标签:没有适当成本分配的资源
注意:Azure Quick Review 参考文档包含创建筛选配置、将输出保存到
output/文件夹以及解读成本优化结果的说明。
步骤 3:发现资源
对于高效的跨订阅资源发现,请使用 Azure Resource Graph。有关孤立资源检测和成本优化模式,请参阅 Azure Resource Graph 查询。
使用 Azure MCP 工具或 CLI 列出订阅中的所有资源:
# 获取订阅信息
az account show
# 列出所有资源
az resource list --subscription "<订阅ID>" --resource-group "<资源组名>"
# 优先使用 MCP 工具处理特定服务:
# - 存储帐户、Cosmos DB、Key Vault:使用 Azure MCP 工具
# - Redis 缓存:使用 mcp_azure_mcp_redis 工具(参见 ./references/azure-redis.md)
# - Web 应用、虚拟机、SQL:使用 az CLI 命令
步骤 4:查询实际成本
从 Azure 成本管理 API 获取实际成本数据(过去 30 天):
创建成本查询文件:
创建包含以下内容的 temp/cost-query.json 文件:
{
"type": "ActualCost",
"timeframe": "Custom",
"timePeriod": {
"from": "<开始日期>",
"to": "<结束日期>"
},
"dataset": {
"granularity": "None",
"aggregation": {
"totalCost": {
"name": "Cost",
"function": "Sum"
}
},
"grouping": [
{
"type": "Dimension",
"name": "ResourceId"
}
]
}
}
需要执行的操作:计算
<开始日期>(30 天前)和<结束日期>(今天),格式为 ISO 8601(例如2025-11-03T00:00:00Z)。
执行成本查询:
# 创建临时文件夹
New-Item -ItemType Directory -Path "temp" -Force
# 使用 REST API 查询(比 az costmanagement query 更可靠)
az rest --method post `
--url "https://management.azure.com/subscriptions/<订阅ID>/resourceGroups/<资源组名>/providers/Microsoft.CostManagement/query?api-version=2023-11-01" `
--body '@temp/cost-query.json'
重要提示:将查询结果保存到 output/cost-query-result<时间戳>.json 以供审计追踪。
步骤 5:验证定价
使用 fetch_webpage 从官方 Azure 定价页面获取当前定价:
// 验证关键服务的定价
fetch_webpage({
urls: ["https://azure.microsoft.com/zh-cn/pricing/details/container-apps/"],
query: "定价层级和成本"
})
需要验证的关键服务:
- 容器应用:https://azure.microsoft.com/zh-cn/pricing/details/container-apps/
- 虚拟机:https://azure.microsoft.com/zh-cn/pricing/details/virtual-machines/
- 应用服务:https://azure.microsoft.com/zh-cn/pricing/details/app-service/
- Log Analytics:https://azure.microsoft.com/zh-cn/pricing/details/monitor/
重要提示:检查免费层级配额——许多 Azure 服务有慷慨的免费限制,这可能解释了 0 成本的原因。
步骤 6:收集利用率指标
查询 Azure Monitor 以获取利用率数据(过去 14 天),为规模调整建议提供依据:
# 计算过去 14 天的日期
$startTime = (Get-Date).AddDays(-14).ToString("yyyy-MM-ddTHH:mm:ssZ")
$endTime = Get-Date -Format "yyyy-MM-ddTHH:mm:ssZ"
# 虚拟机 CPU 利用率
az monitor metrics list `
--resource "<资源ID>" `
--metric "Percentage CPU" `
--interval PT1H `
--aggregation Average `
--start-time $startTime `
--end-time $endTime
# 应用服务计划利用率
az monitor metrics list `
--resource "<资源ID>" `
--metric "CpuTime,Requests" `
--interval PT1H `
--aggregation Total `
--start-time $startTime `
--end-time $endTime
# 存储容量
az monitor metrics list `
--resource "<资源ID>" `
--metric "UsedCapacity,BlobCount" `
--interval PT1H `
--aggregation Average `
--start-time $startTime `
--end-time $endTime
步骤 7:生成优化报告
在 output/ 文件夹中创建一个全面的成本优化报告:
使用 create_file 工具,路径为 output/costoptimizereport<YYYYMMDD_HHMMSS>.md:
报告结构:
# Azure 成本优化报告
**生成时间**:<时间戳>
## 执行摘要
- 月度总成本:$X (💰 实际数据)
- 主要成本驱动因素:[列出前 3 个资源及其 Azure 门户链接]
## 成本构成
[按成本排序的前 10 个资源表格,包含 Azure 门户链接]
## 免费层级分析
[在免费层级内运行的、成本为 0 的资源]
## 孤立资源(即时节约)
[来自 azqr - 可以立即删除的资源]
- 资源名称及门户链接 - 预计每月节省 $X
## 优化建议
### 优先级 1:高影响,低风险
[示例:删除孤立资源]
- 💰 实际成本:$X/月
- 📊 预估节约:$Y/月
- 可执行的命令(附带警告)
### 优先级 2:中等影响,中等风险
[示例:将虚拟机从 D4s_v5 调整到 D2s_v5]
- 💰 实际基准:D4s_v5,$X/月
- 📈 实际指标:CPU 8%,内存 30%
- 💵 验证定价:D4s_v5 $Y/小时,D2s_v5 $Z/小时
- 📊 预估节约:$S/月
- 可执行的命令
### 优先级 3:长期优化
[示例:预留实例、存储分层]
## 总预估节约
- 月度:$X
- 年度:$Y
## 实施命令
[带有批准警告的安全命令]
## 验证附录
### 数据源和文件
- **成本查询结果**:`output/cost-query-result<时间戳>.json`
- 来自 Azure 成本管理 API 的原始成本数据
- 证明报告生成时实际成本的审计线索
- 至少保存 12 个月以供历史比较
- 包含分析期内每个资源的精确成本
- **定价来源**:[指向 Azure 定价页面的链接]
- **免费层级配额**:[适用的配额]
> **注意**:`temp/cost-query.json` 文件(如果存在)是一个临时查询模板,可以安全删除。所有永久审计数据都在 `output/` 文件夹中。
门户链接格式:
https://portal.azure.com/#@<租户ID>/resource/subscriptions/<订阅ID>/resourceGroups/<资源组名>/providers/<资源提供者>/<资源类型>/<资源名称>/overview
步骤 8:保存审计追踪
保存所有成本查询结果以供验证:
使用 create_file 工具,路径为 output/cost-query-result<YYYYMMDD_HHMMSS>.json:
{
"timestamp": "<ISO_8601>",
"subscription": "<订阅ID>",
"resourceGroup": "<资源组名>",
"queries": [
{
"queryType": "ActualCost",
"timeframe": "MonthToDate",
"query": { },
"response": { }
}
]
}
步骤 9:清理临时文件
报告生成后,删除临时查询文件和文件夹:
# 删除整个临时文件夹(不再需要)
Remove-Item -Path "temp" -Recurse -Force -ErrorAction SilentlyContinue
注意:
temp/cost-query.json文件仅在 API 执行期间需要。实际的查询和结果会保存在output/cost-query-result*.json中以供审计。
输出
此技能生成:
- 成本优化报告 (
output/costoptimizereport<时间戳>.md)- 包含总成本和主要驱动因素的执行摘要
- 带有 Azure 门户链接的详细成本分解
- 基于实际数据和预估节约的优先级建议
- 带有安全警告的实施命令
- 成本查询结果 (
output/cost-query-result<时间戳>.json)- 所有成本查询和响应的审计线索
- 建议的验证证据
重要说明
数据分类
- 💰 实际数据 = 从 Azure 成本管理 API 获取
- 📈 实际指标 = 从 Azure Monitor 获取
- 💵 验证定价 = 从官方 Azure 定价页面获取
- 📊 预估节约 = 基于实际数据和验证定价计算得出
最佳实践
- 始终先查询实际成本——切勿估算或假设
- 从官方来源验证定价——考虑免费层级
- 对成本查询使用 REST API(比
az costmanagement query更可靠) - 保存审计线索——包含所有查询和响应
- 为所有资源包含 Azure 门户链接
- 创建报告文件时使用 UTF-8 编码
- 对于每月成本低于 10 美元的情况,应强调运营改进而非财务节约
- 未经明确批准,切勿执行破坏性操作
常见陷阱
- 假设成本:始终从成本管理 API 查询实际数据
- 忽略免费层级:许多服务有慷慨的配额(例如,容器应用:每月 18 万 vCPU 秒免费)
- 使用错误的日期范围:成本数据用 30 天,利用率数据用 14 天
- 门户链接失效:验证租户 ID 和资源 ID 格式
- 成本查询失败:使用带 JSON 主体的
az rest,而不是az costmanagement query
安全要求
- 在删除资源前获得批准
- 先在非生产环境测试更改
- 提供用于验证的试运行命令
- 包含回滚步骤
- 实施后监控影响
SDK 快速参考
- Redis 管理:.NET
📄 原始文档
完整文档(英文):
https://skills.sh/microsoft/azure-skills/azure-cost-optimization
💡 提示:点击上方链接查看 skills.sh 原始英文文档,方便对照翻译。

评论(0)