az-cost-optimize

az-cost-optimize

热门

分析应用中使用的 Azure 资源(IaC 基础设施即代码文件及/或目标资源组中的资源)并进行成本优化,同时针对识别出的优化点自动创建 GitHub issue。

3.7万Star
4569Fork
更新于 2026/7/14
SKILL.md
只读
名称
az-cost-optimize
描述

分析应用中使用的 Azure 资源(IaC 基础设施即代码文件及/或目标资源组中的资源)并进行成本优化,同时针对识别出的优化点自动创建 GitHub issue。

Azure 成本优化 (Azure Cost Optimize)

本工作流通过分析基础设施即代码(IaC)文件和 Azure 现存资源来生成成本优化建议。它会为每一个优化点独立创建 GitHub issue,并生成一个汇总的 EPIC issue 统一协调实施,协助团队高效追踪与落地降本举措。

前提条件

  • 已配置并完成鉴权的 Azure MCP server
  • 已配置并完成鉴权的 GitHub MCP server
  • 已指定目标 GitHub 仓库
  • 已部署 Azure 资源(IaC 文件可选,但建议提供)
  • 在有可用工具时,优先选用 Azure MCP 工具(azmcp-*),而非直接使用 Azure CLI

工作流步骤

步骤 1:获取 Azure 最佳实践

操作:在开展分析前获取成本优化最佳实践
工具:Azure MCP best practices 工具
流程

  1. 加载最佳实践
    • 执行 azmcp-bestpractices-get 获取最新的 Azure 优化指南。这可能无法覆盖所有场景,但能提供基础参考。
    • 尽可能利用这些最佳实践指导后续分析与建议生成
    • 在优化建议中引用相关最佳实践(来源于 MCP 工具输出或通用 Azure 官方文档)

步骤 2:探查 Azure 基础设施

操作:动态探查并分析 Azure 资源及配置
工具:Azure MCP 工具 + Azure CLI 备用方案 + 本地文件系统访问
流程

  1. 资源探查

    • 执行 azmcp-subscription-list 查询可用订阅
    • 执行 azmcp-group-list --subscription <subscription-id> 查询资源组
    • 获取相关资源组中的所有资源清单:
      • 使用 az resource list --subscription <id> --resource-group <name>
    • 对每种资源类型,优先使用 MCP 工具;如不可用,再退回使用 CLI:
      • azmcp-cosmos-account-list --subscription <id> - Cosmos DB 账号
      • azmcp-storage-account-list --subscription <id> - 存储账号
      • azmcp-monitor-workspace-list --subscription <id> - Log Analytics 工作区
      • azmcp-keyvault-key-list - Key Vault 密钥库
      • az webapp list - Web Apps(备用 - 无可用 MCP 工具)
      • az appservice plan list - App Service 计划(备用)
      • az functionapp list - Function Apps(备用)
      • az sql server list - SQL 数据库服务器(备用)
      • az redis list - Redis 缓存(备用)
      • ... 其他资源类型依次类推
  2. IaC 文件检测

    • 使用 file_search 扫描 IaC 文件:"/*.bicep", "/*.tf", "/main.json", "/template.json"
    • 解析资源定义,梳理预期配置
    • 与实际探查到的资源对比,识别配置偏差
    • 记录 IaC 文件的存在情况,供后续提供实施建议
    • 禁止使用代码库中的任何其他文件,仅限使用 IaC 文件。其他文件不能作为单一事实来源(Source of Truth)。
    • 如果未找到任何 IaC 文件,请立即停止并向用户汇报未找到 IaC 文件。
  3. 配置分析

    • 提取各资源的当前 SKU、层级(Tier)及配置设置
    • 梳理资源间的关联与依赖关系
    • 在有数据的情况下,绘制资源利用率模式

步骤 3:收集使用率指标并校验当前成本

操作:收集资源利用率数据,并核实实际资源成本
工具:Azure MCP 监控工具 + Azure CLI
流程

  1. 查找监控数据源

    • 使用 azmcp-monitor-workspace-list --subscription <id> 查找 Log Analytics 工作区
    • 使用 azmcp-monitor-table-list --subscription <id> --workspace <name> --table-type "CustomLog" 探索可用数据表
  2. 执行使用率查询

    • 使用 azmcp-monitor-log-query 运行以下预定义查询:
      • 查询语句:"recent" 获取近期活动模式
      • 查询语句:"errors" 获取表明异常的错误日志
    • 如需自定义分析,使用 KQL 查询:
    // App Services 的 CPU 利用率
    AppServiceAppLogs
    | where TimeGenerated > ago(7d)
    | summarize avg(CpuTime) by Resource, bin(TimeGenerated, 1h)
    
    // Cosmos DB RU 消耗量
    AzureDiagnostics
    | where ResourceProvider == "MICROSOFT.DOCUMENTDB"
    | where TimeGenerated > ago(7d)
    | summarize avg(RequestCharge) by Resource
    
    // 存储账号访问模式
    StorageBlobLogs
    | where TimeGenerated > ago(7d)
    | summarize RequestCount=count() by AccountName, bin(TimeGenerated, 1d)
    
  3. 计算基线指标

    • CPU/内存平均利用率
    • 数据库吞吐量模式
    • 存储访问频次
    • Function 执行速率
  4. 校验当前成本

    • 基于步骤 2 探查到的 SKU/层级配置
    • https://azure.microsoft.com/pricing/ 查询最新 Azure 定价,或使用 az billing 相关命令
    • 记录格式:资源名称 → 当前 SKU → 预计每月成本
    • 在给出建议之前,计算出真实合理的当前月度总成本

步骤 4:生成成本优化建议

操作:分析资源并找出降本优化点
工具:基于已收集数据的本地分析
流程

  1. 应用优化模式(根据匹配到的资源类型):

    计算资源优化

    • App Service Plans:根据 CPU/内存实际使用率调整合适规格(Right-sizing)
    • Function Apps:低使用率场景由 Premium 降级为 Consumption 计划
    • 虚拟机(VM):针对配置过高的实例进行缩容

    数据库优化

    • Cosmos DB:
      • 变动负载场景由 Provisioned 调整为 Serverless
      • 根据实际使用量精细调整 RU/s
    • SQL Database:根据 DTU 实际使用量调整服务层级

    存储优化

    • 配置生命周期策略(Hot → Cool → Archive)
    • 合并冗余存储账号
    • 根据访问模式调整存储层级规格

    基础设施优化

    • 清理未使用或冗余的资源
    • 在适用场景配置弹性伸缩(Auto-scaling)
    • 对非生产环境设置定时关机/调度
  2. 基于凭据计算可节省金额

    • 已校验的当前成本 - 目标成本 = 可节省金额
    • 记录当前配置与目标配置的定价来源
  3. 计算各项建议的优先级得分

    优先级得分 = (价值得分 × 月度节省金额) / (风险得分 × 实施天数)
    
    高优先级:得分 > 20
    中优先级:得分 5-20
    低优先级:得分 < 5
    
  4. 校验优化建议

    • 确保 Azure CLI 命令准确无误
    • 验证预估节省金额计算逻辑
    • 评估实施风险与前提条件
    • 确保所有节省金额计算均有据可依

步骤 5:用户确认

操作:在创建 GitHub issue 前展示汇总结果并获取授权
流程

  1. 展示优化汇总

    🎯 Azure 成本优化汇总
    
    📊 分析结果:
    • 已分析资源总数:X
    • 当前月度成本:$X 
    • 预计每月可节省:$Y 
    • 优化机会点:Z
    • 高优先级项:N
    
    🏆 优化建议列表:
    1. [资源]: [当前 SKU] → [目标 SKU] = 节省 $X/月 - [风险等级] | [实施工作量]
    2. [Resource]: [Current Config] → [Target Config] = $Y/month savings - [Risk Level] | [Implementation Effort]
    3. [Resource]: [Current Config] → [Target Config] = $Z/month savings - [Risk Level] | [Implementation Effort]
    ... 依此类推
    
    💡 执行后将创建:
    • Y 个独立 GitHub issue(每个优化点 1 个)
    • 1 个主 EPIC issue 用于统一协调实施
    
    ❓ 是否确认创建 GitHub issue?(y/n)
    
  2. 等待用户确认:仅在用户明确确认后方可继续

步骤 6:创建独立的优化 Issue

操作:针对每个优化点分别创建单独的 GitHub issue。添加标签 "cost-optimization"(绿色)、"azure"(蓝色)。
所需 MCP 工具:针对每条建议调用 create_issue
流程

  1. 创建独立 Issue,使用如下模板:

    标题格式[COST-OPT] [资源类型] - [简要描述] - 预计每月节省 $X

    正文模板

    ## 💰 成本优化:[简短标题]
    
    **每月节省**: $X | **风险等级**: [Low/Medium/High] | **实施工作量**: X 天
    
    ### 📋 事项说明
    [清晰说明优化方案及实施必要性]
    
    ### 🔧 实施方案
    
    **检测到 IaC 文件**: [是/否 - 基于 file_search 结果]
    
    ```bash
    # 如果检测到 IaC 文件:展示 IaC 修改点 + 部署命令
    # 文件: infrastructure/bicep/modules/app-service.bicep
    # 变更: sku.name: 'S3' → 'B2'
    az deployment group create --resource-group [rg] --template-file infrastructure/bicep/main.bicep
    
    # 如果未检测到 IaC 文件:直接提供 Azure CLI 命令 + 警告
    # ⚠️ 未找到 IaC 文件。如果代码存储在其他地方,请改为修改对应的 IaC 文件。
    az appservice plan update --name [plan] --sku B2
    

    📊 依据与数据

    • 当前配置:[详细信息]
    • 使用模式:[监控数据凭据]
    • 成本影响:$X/月 → $Y/月
    • 最佳实践对齐:[引用 Azure 官方最佳实践(如适用)]

    ✅ 验收与验证步骤

    • [ ] 在非生产环境中进行测试
    • [ ] 确认性能无衰减
    • [ ] 在 Azure Cost Management 中核实成本已降低
    • [ ] 必要时更新监控与告警设置

    ⚠️ 风险与注意事项

    • [风险点 1 及应对预案]
    • [风险点 2 及应对预案]

    优先级得分: X | 价值: X/10 | 风险: X/10

    
    

步骤 7:创建汇总协调 EPIC Issue

操作:创建主 Issue 用于跟踪所有优化工作的落地。添加标签 "cost-optimization"(绿色)、"azure"(蓝色)和 "epic"(紫色)。
所需 MCP 工具:针对 EPIC 调用 create_issue
关于 mermaid 图表的说明:请务必校验 mermaid 语法无误,并在绘制图表时兼顾无障碍设计规范(配色、样式等)。
流程

  1. 创建 EPIC Issue

    标题[EPIC] Azure 成本优化专项 - 预计每月潜在节省 $X

    正文模板

    # 🎯 Azure 成本优化 EPIC
    
    **预计总节省金额**: $X/月 | **实施周期**: X 周
    
    ## 📊 执行摘要
    - **已分析资源**: X
    - **优化机会点**: Y  
    - **月度节省潜力**: $X
    - **高优先级项**: N
    
    ## 🏗️ 当前架构概览
    
    ```mermaid
    graph TB
        subgraph "资源组: [名称]"
            [生成的架构图,展示当前资源及其成本]
        end
    

    📋 实施追踪

    🚀 高优先级(优先实施)

    • [ ] #[issue-number]: [标题] - 每月节省 $X
    • [ ] #[issue-number]: [标题] - 每月节省 $X

    ⚡ 中优先级

    • [ ] #[issue-number]: [标题] - 每月节省 $X
    • [ ] #[issue-number]: [标题] - 每月节省 $X

    🔄 低优先级(可选优化)

    • [ ] #[issue-number]: [标题] - 每月节省 $X

    📈 进度跟踪

    • 已完成: 0 / Y 项优化
    • 实际已节省: $0 / $X(月度)
    • 实施状态: 未开始

    🎯 成功标准

    • [ ] 所有高优先级优化项均已落地
    • [ ] 实现 >80% 的预估节省目标
    • [ ] 业务性能未受任何影响
    • [ ] 成本监控仪表板已同步更新

    📝 备注说明

    • 随 Issue 完成进度定期复盘并更新本 EPIC
    • 持续监控实际节省金额与预估金额的对比
    • 建议定期开展成本优化评审
    
    

异常处理

  • 成本校验:如果预估节省金额缺乏数据支持,或与 Azure 官方定价不符,请重新核实资源配置