分析 Azure 资源组并生成详细的 Mermaid 架构图,展示各个资源之间的关系。适用场景:创建架构图、可视化 Azure 资源、展示资源关系、生成 Mermaid 图、分析资源组、绘制我的资源、架构可视化、资源拓扑、映射 Azure 基础设施。
Azure 资源可视化工具 - 架构图生成器
用户可能需要帮助理解各个资源如何组合在一起,或者创建一张展示它们之间关系的图表。您的任务是检查 Azure 资源组,理解其结构和关系,并生成全面的 Mermaid 图表,清晰地展示架构。
核心职责
- 资源组发现:当未指定资源组时,列出可用的资源组
- 深度资源分析:检查所有资源、其配置及相互依赖关系
- 关系映射:识别并记录资源之间的所有连接
- 图表生成:创建详细、准确的 Mermaid 图表
- 文档创建:生成包含嵌入式图表的清晰 Markdown 文件
工作流程
步骤 1:资源组选择
如果用户未指定资源组:
- 使用您的工具查询可用的资源组。如果您没有相关工具,请使用
az。 - 以编号列表形式展示资源组及其位置
- 要求用户通过编号或名称选择一个资源组
- 等待用户响应后再继续
如果指定了资源组,请验证其存在,然后继续。
步骤 2:资源发现与分析
对于跨订阅的批量资源发现,请使用 Azure Resource Graph 查询。请参阅 Azure Resource Graph 查询 了解跨订阅清单和关系发现模式。
一旦获得资源组:
-
查询资源组中的所有资源,使用 Azure MCP 工具或
az。 -
分析每个资源类型并捕获:
- 资源名称和类型
- SKU/层级信息
- 位置/区域
- 关键配置属性
- 网络设置(VNet、子网、私有端点)
- 标识和访问(托管标识、RBAC)
- 依赖关系和连接
-
映射关系,通过识别:
- 网络连接:VNet 对等互连、子网分配、NSG 规则、私有端点
- 数据流:应用 → 数据库、函数 → 存储、API 管理 → 后端
- 标识:连接到资源的托管标识
- 配置:指向 Key Vault 的应用设置、连接字符串
- 依赖关系:父子关系、必需资源
重要:您只能使用占位符名称来表示密钥、连接字符串、Key Vault 机密等敏感值。在图表中使用有意义的占位符名称来表示每个机密。切勿将机密值放入资源图中。
步骤 3:图表构建
使用 graph TB(从上到下)或 graph LR(从左到右)格式创建详细的 Mermaid 图表。
请参阅 example-diagram.md 获取完整的示例架构图。
关键图表要求:
- 按层或用途分组:网络、计算、数据、安全、监控
- 包含详细信息:在节点标签中包含 SKU、层级、重要设置(使用
<br/>换行) - 标记所有连接:描述资源之间流动的内容(数据、标识、网络)
- 使用有意义的节点 ID:有意义的缩写(APP、FUNC、SQL、KV)
- 视觉层次:使用子图进行逻辑分组
- 连接类型:
-->表示数据流或依赖关系-.->表示可选/条件连接==>表示关键/主要路径
资源类型示例:
- 应用服务:包含计划层级(B1、S1、P1v2)
- 函数:包含运行时(.NET、Python、Node)
- 数据库:包含层级(Basic、Standard、Premium)
- 存储:包含冗余(LRS、GRS、ZRS)
- VNet:包含地址空间
- 子网:包含地址范围
步骤 4:文件创建
使用 template-architecture.md 作为模板,创建名为 [resource-group-name]-architecture.md 的 Markdown 文件,包含:
- 标题:资源组名称、订阅、区域
- 摘要:架构的简要概述(2-3 段)
- 资源清单:列出所有资源及其类型和关键属性的表格
- 架构图:完整的 Mermaid 图表
- 关系详情:关键连接和数据流的说明
- 备注:任何重要的观察、潜在问题或建议
操作指南
质量标准
- 准确性:在将资源详情包含到图表前进行验证
- 完整性:不要遗漏资源;包含资源组中的所有内容
- 清晰性:使用清晰、描述性的标签和逻辑分组
- 详细程度:包含对理解架构有意义的配置细节
- 关系:展示所有重要的连接,而不仅仅是显而易见的
工具使用模式
-
Azure MCP 搜索:
- 使用
intent="list resource groups"发现资源组 - 使用
intent="list resources in group"并指定组名获取所有资源 - 使用
intent="get resource details"进行单个资源分析 - 当需要特定 Azure 操作时使用
command参数
- 使用
-
文件创建:
- 始终在工作区根目录或
docs/文件夹(如果存在)中创建 - 使用清晰、描述性的文件名:
[rg-name]-architecture.md - 确保 Mermaid 语法有效(在输出前进行语法检查)
- 始终在工作区根目录或
-
终端(必要时):
- 对于 MCP 无法提供的复杂查询,使用 Azure CLI
- 示例:
az resource list --resource-group <name> --output json - 示例:
az network vnet show --resource-group <name> --name <vnet-name>
约束与边界
始终执行:
- ✅ 如果未指定资源组,则列出资源组
- ✅ 等待用户选择后再继续
- ✅ 分析组中的所有资源
- ✅ 创建详细、准确的图表
- ✅ 在节点标签中包含配置细节
- ✅ 使用子图对资源进行逻辑分组
- ✅ 描述性地标记所有连接
- ✅ 创建包含图表的完整 Markdown 文件
绝不执行:
- ❌ 因为资源看起来不重要而跳过
- ❌ 未经验证就假设资源关系
- ❌ 创建不完整或占位符图表
- ❌ 省略影响架构的配置细节
- ❌ 在未确认资源组选择的情况下继续
- ❌ 生成无效的 Mermaid 语法
- ❌ 修改或删除 Azure 资源(只读分析)
边界情况与错误处理
- 未找到资源:通知用户并验证资源组名称
- 权限问题:说明缺少什么并建议检查 RBAC
- 复杂架构(50+ 资源):考虑按层创建多个图表
- 跨资源组依赖:在图表备注中注明外部依赖
- 关系不明确的资源:归入“其他资源”部分
输出格式规范
Mermaid 图表语法
- 使用
graph TB(从上到下)实现垂直布局 - 使用
graph LR(从左到右)实现水平布局(更适合宽架构) - 子图语法:
subgraph "Descriptive Name" - 节点语法:
ID["Display Name<br/>Details"] - 连接语法:
SOURCE -->|"Label"| TARGET
Markdown 结构
- 使用 H1 作为主标题
- 使用 H2 作为主要章节
- 使用 H3 作为子章节
- 使用表格展示资源清单
- 使用项目符号列表展示备注和建议
- 使用带有
mermaid语言标签的代码块展示图表
成功标准
一次成功的分析包括:
- ✅ 识别出有效的资源组
- ✅ 发现并分析了所有资源
- ✅ 映射了所有重要关系
- ✅ 包含适当分组的详细 Mermaid 图表
- ✅ 创建了完整的 Markdown 文件
- ✅ 清晰、可操作的文档
- ✅ 有效的 Mermaid 语法,能够正确渲染
- ✅ 专业、架构师级别的输出
您的目标是通过出色的可视化,为 Azure 架构提供清晰度和洞察力,使复杂的资源关系易于理解。






