新闻详情

新闻详情

首页 / 资讯中心 / 详情

深入解析 SQL Assessment API 的 AzMetadata 探针:通过 IMDS 元数据评估 Azure VM 上的 SQL Server

发布时间:2026/9/25 7:11:57来源:尧图网络
深入解析 SQL Assessment API 的 AzMetadata 探针:通过 IMDS 元数据评估 Azure VM 上的 SQL Server
示例工程数据库教程后端【免费下载链接】sql-server-samplesAzure Data SQL Samples - Official Microsoft GitHub Repository containing code samples for SQL Server, Azure SQL, Azure Synapse, and Azure SQL Edge项目地址https://gitcode.com/gh_mirrors/sq/sql-server-samples点击查看免费下载SQL Assessment API 在评估运行于 Azure 虚拟机上的 SQL Server 时需要读取 VM 自身的环境信息如计算规格、VM 标识来判断资源配置是否符合最佳实践。AzMetadata探针正是承担这一职责的数据获取机制它通过 JSONPath 从 Azure Instance Metadata ServiceIMDS返回的 JSON 对象中精准提取所需字段并在远程评估场景下以 Azure Resource Graph 的 Kusto 查询模拟 IMDS 数据源。读完本文你将理解AzMetadata探针的参数模型、它在默认规则集中的真实实现AzVmProps探针与AzSqlVmSize检查的完整链路以及如何配置 Azure 环境运行这类 Azure 专属检查规则。探针机制在 SQL Assessment API 中的定位在 SQL Assessment API 的规则引擎中Probe探针是负责取数的组件规则Check通过条件表达式消费探针产出的变量探针则按各自类型从不同数据源取回数据。默认规则集里的探针只读取元数据如更新日志、服务器属性不读取表内用户数据也不会向数据库或实例写入任何内容——AzMetadata探针同样遵循这一无副作用的设计约束。关于探针在 JSON 规则文件中的整体结构可参考 Probe 文档 与 JSON 配置文件格式说明。探针类型决定了取数机制AzMetadata与AzGraph是其中面向 Azure 环境的两类类型说明AzGraph对 Azure Resource Graph 执行 Kusto 查询AzMetadata对 Azure Instance Metadata Service 返回的对象执行 JSONPath 提取CMD在目标机器上运行命令 shell 脚本External执行任意 .NET 代码PowerShell执行 PowerShell 脚本Registry读取注册表数据SQL执行 T-SQL 查询WMI执行 WMI 查询完整的探针类型清单见 Probes 索引。AzMetadata 探针的数据来源与工作方式Type codeAzMetadataAzMetadata探针返回的数据来源于 Azure Instance Metadata ServiceIMDS。IMDS 是运行在每个 Azure VM 内的 REST 服务可通过链路本地地址访问它将 VM 的实例元数据以 JSON 对象形式返回内容涵盖计算规格VM 大小、资源 ID、VM ID、网络配置、存储信息、订阅与位置等环境事实。AzMetadata探针本身并不直接发起 HTTP 请求而是通过JSONPath从该 JSON 对象中按路径取出需要的数据段。当评估在远程执行且 Azure Graph 可用时IMDS 无法被远程触达此时引擎会改用一条 Kusto 查询来模拟IMDS 返回的数据。也就是说AzMetadata探针存在两种数据通道本机评估或可访问 IMDS 的场景直接读取 IMDS 返回的 JSON按 JSONPath 取数远程评估 Azure Graph 可用以 Kusto 查询模拟 IMDS 的 JSON 数据结合AzGraph探针完成资源查询。Implementation 属性唯一参数 queryAzMetadata探针的implementation部分包含如下参数参数必填类型默认值说明query是String无要检索数据的 JSONPathquery是探针实现中唯一且必需的参数它必须是一个合法的 JSONPath 表达式指向 IMDS JSON 对象中的目标字段。探针执行后JSONPath 命中的值会成为探针产出的变量供规则的条件表达式消费。默认规则集中的真实实现AzVmProps 与 AzSqlVmSize仓库自带的默认规则集 ruleset.json 是理解AzMetadata探针用法的最佳样本。其中名为AzVmProps的探针族Probe Family就是一个标准的AzMetadata实现见 ruleset.jsonAzVmProps: [ { type: AzMetadata, target: { engineEdition: SqlServer, platform: Windows, version: [11.0,), machineType: AzureVm }, implementation: { query: $.compute } } ]这段定义说明了三件事query的取数路径$.compute表示从 IMDS 的 JSON 根对象出发取出compute段——该段包含 VM 大小vmSize、资源 IDresourceId、VM IDvmId等关键字段与AzMetadata探针文档所述的 JSONPath 提取方式完全一致。target 模式过滤该实现只对满足条件的对象生效——本地 SQL Server 引擎版本engineEdition: SqlServer、Windows 平台platform: Windows、SQL Server 11.0 及以上version: [11.0,)、且宿主机器类型为 Azure VMmachineType: AzureVm。target 模式的完整语法engineEdition、platform、version、machineType、name、serverName、type 等属性及字符串/正则/版本区间匹配规则见 TargetPattern 文档。探针族的数组语义AzVmProps的值是探针实现数组引擎按顺序选择第一个 target 匹配的实现后续规则集还可以在列表之上追加新的实现详见 Probe 文档 与 JSON 配置说明。消费AzVmProps产出数据的规则是AzSqlVmSize见 ruleset.json{ id: AzSqlVmSize, itemType: definition, target: { type: Server, platform: Windows, engineEdition: SqlServer, version: [11.0,), machineType: AzureVm }, tags: [ DefaultRuleset, SqlOnVm, Azure, Performance ], displayName: VM size is not memory-optimized, message: Use memory optimized virtual machine sizes for the best performance of SQL Server workloads, level: Information, condition: { imatch: vmSize, (^Standard_DS?1[1-5?_v2$)|(^Standard_E\\d[asi]*(-\\d[sad])?_v[3-4]$)|(^Standard_M\\d[ltms]*(-\\d[ms])?(_v21?)?$)|(^Standard_GS\\d-\\d$) ] }, probes: [ AzVmProps ] }整条链路可以这样理解AzVmProps探针通过$.compute取回 IMDS 的 compute 段后vmSize变量即被填充为当前 VM 的规格名如Standard_D14_v2AzSqlVmSize规则的condition用imatch不区分大小写的正则匹配将vmSize与内存优化型 VM 规格的正则集合比对——DSv2 11-15、Edsv4、M 与 Mv2 系列、GS 系列等内存优化规格命中正则时条件成立规则不告警否则规则判定 VM 规格未针对 SQL Server 工作负载做内存优化输出Use memory optimized virtual machine sizes...的建议。该规则仅适用于部署在 Azure VM 上的 SQL Server其machineType: AzureVm的目标过滤保证了它不会误作用于本地物理机。值得一提的是ruleset.json中还定义了同属 Azure 数据通道的AzGraph探针GetAzVmResourceId见 ruleset.json其实现通过 Kusto 查询按vmId反查资源的 Azure 资源 IDimplementation: { query: Resources\r\n | where type ~ Microsoft.Compute/virtualMachines\r\n | where properties.vmId ~ vmId\r\n | project resourceId id\r\n | take 1 }从源码结构看这条AzGraph查询引用的vmId参数与AzMetadata探针返回的 compute 段IMDS 中本就包含vmId字段高度吻合可以推断远程评估场景下AzMetadata负责提供 VM 标识等实例元数据AzGraph则负责在订阅范围内解析对应的 Azure 资源对象——二者协同构成IMDS 模拟 Resource Graph 查询的完整数据通道。AzGraph探针本身的参数同样只有一个queryKusto 查询可用引用参数见 AzGraphProbe 文档。运行 Azure 专属评估的完整流程要让AzSqlVmSize这类 Azure 规则真正参与评估需要按 UsingAzureRules 指南 完成环境准备与评估调用。前置条件安装 Azure PowerShell 模块与Az.ResourceGraph模块在调用 SQL Assessment 之前先通过 Azure PowerShell 登录 Azure 账户。特别说明可以在某个 PowerShell 会话中执行Connect-AzAccount登录后续会话复用该连接即不必重复登录但复用连接时SQL Assessment cmdlet 需要显式执行Import-Module Az.ResourceGraph导入模块。执行评估# 1. 建立 Azure 账户连接使评估可获取 Azure Resource Graph 数据 Connect-AzAccount # 2.可选切换到指定订阅上下文 Set-AzContext My-Pay-As-You-Go # 3.可选创建凭据对象用于连接 SQL Server $cred Get-Credential # 4. 选择要评估的 SQL Server 对象-Credential 可省略 $target Get-SqlInstance -ServerInstance Computer002\InstanceName -Credential $cred # 5. 运行评估输出最佳实践建议 Invoke-SqlAssessment $target评估结果的输出形如下表TargetPath显示承载被评估实例的服务器名Sev.为严重级别Information / Medium / Low / HighMessage为具体建议Check ID为规则名Origin标注规则集名称与版本。其中AzSqlVmSize正是仅适用于 Azure VM 上 SQL Server 的规则TargetPath : Server[NameContosoAzureSQL] Sev. Message Check ID Origin ---- ------- -------- ------ Medi Amount of single use plans in cache is high (100%). Consider PlansUseRatio Microsoft Ruleset 0.1.202 enabling the Optimize for ad hoc workloads setting on heavy OLTP ad-hoc workloads to conserve resources Low Use memory optimized virtual machine sizes for the best AzSqlVmSize Microsoft Ruleset 0.1.202 performance of SQL Server workloads如果只想快速评估本机实例而不涉及 Azure 数据通道也可以直接运行 QuickStart 指南 中的两行命令Install-Module -Name SqlServer -AllowClobber Get-SqlInstance -ServerInstance localhost | Invoke-SqlAssessment编写自定义 AzMetadata 探针的要点在自定义规则集中声明AzMetadata探针时只需在探针族数组中声明一个type: AzMetadata的实现并配合target模式与queryJSONPath。仓库的 MakingCustomChecks_sample.json 展示了规则与探针的完整书写范式target 过滤、tags、condition 表达式、probes 引用等可作为自定义规则的起点。编写时还需注意探针族数组的顺序即优先级引擎选取第一个 target 匹配的实现因此通用实现应放在前面、更具体的实现放在后面JSONPath 要精确query直接决定取回的数据段路径写错会导致规则变量缺失。默认规则集使用的$.compute是取整段计算信息的便捷写法探针设计为无副作用函数引擎可能重排探针调用顺序以优化目标 SQL Server 负载当没有任何规则需要某个探针的数据时该探针根本不会执行见 Probe 文档可选的功能与逻辑要求探针可通过requires功能要求不满足则探针不执行、依赖检查被跳过并返回警告和runFor逻辑要求不满足则直接返回空结果集约束执行条件详见 ProbeRequirements配合数据转换复用取数结果如果同一探针数据在不同规则中需要不同形态例如一个规则要平均值、另一个要最大值可以在 ProbeReference 中引用同一探针并各自施加 DataTransformation探针本身只被调用一次数据被复用。补充阅读与工程佐证AzGraphProbe 参考与AzMetadata配套的 Azure 数据通道探针Probe 文档 与 JSONConfiguration 文档探针族、探针实现、规则与条件表达式的完整 JSON 语法TargetPattern 文档machineType: AzureVm等目标模式的字符串/正则/版本区间匹配规则UsingAzureRules 指南Azure VM 场景评估的完整操作步骤默认规则全集ruleset.json含AzVmProps、AzSqlVmSize、GetAzVmResourceId的完整定义与可读版本 DefaultRuleset.csv.NET 客户端示例 AssessmentClient.SMO/Program.cs演示通过 SMO 的GetAssessmentItems/GetAssessmentResultsList以编程方式构建检查清单并执行评估。综上AzMetadata探针是 SQL Assessment API 打通SQL Server 配置评估与Azure VM 实例元数据之间的关键桥梁一条 JSONPath 即可让规则感知 VM 规格、VM 标识等云环境事实配合AzGraph探针的 Kusto 模拟通道即便评估在远端执行也能获得与 IMDS 等价的元数据从而让AzSqlVmSize这类 Azure 专属规则在真实运维场景中落地生效。赞分享示例工程数据库教程后端【免费下载链接】sql-server-samplesAzure Data SQL Samples - Official Microsoft GitHub Repository containing code samples for SQL Server, Azure SQL, Azure Synapse, and Azure SQL Edge项目地址https://gitcode.com/gh_mirrors/sq/sql-server-samples点击查看免费下载相关推荐Refine useCustomMutation 完全指南通过 dataProvider 的 custom 方法发送自定义变更请求Refine useCustomMutation 完全指南通过 dataProvider 的 custom 方法发送自定义变更请求 useCustomMuta示例工程数据库教程后端使用 SQL Assessment API 评估 Azure 虚拟机上的 SQL Server开启并理解 Azure 专属规则AzSqlVmSize实战指南使用 SQL Assessment API 评估 Azure 虚拟机上的 SQL Server开启并理解 Azure 专属规则AzSqlVmSize实战指示例工程数据库教程后端SQL Assessment API 自定义探测指南用 T-SQL Probe 驱动 SQL Server 配置评估SQL Assessment API 自定义探测指南用 T SQL Probe 驱动 SQL Server 配置评估 SQL Assessment API 通示例工程数据库教程后端上一篇Flutter Deer集成测试完全指南确保应用质量的7个关键步骤下一篇SubHook项目贡献指南从问题报告到代码提交的完整流程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

美股与A股市场反应差异解析及套利策略 2026/9/25 7:40:23

美股与A股市场反应差异解析及套利策略

1. 市场反应差异现象解析最近观察到的一个有趣现象:某些行业利好或利空消息在美股市场快速反应后,A股市场往往需要延迟一段时间才会出现类似的价格变动。这种跨市场间的信息传导延迟,本质上反映了不同市场结构、参与者构成和交易机制带来的价…

阅读更多 →
AEME 2026国际学术会议:航空航天与机械工程前沿解析 2026/9/25 7:40:23

AEME 2026国际学术会议:航空航天与机械工程前沿解析

1. 会议背景与核心价值2026年航空航天工程与机械工程国际学术会议(AEME 2026)是南京航空航天大学主办的重量级行业盛会。作为在亚洲地区具有重要影响力的学术平台,这个会议已经连续举办多届,形成了稳定的学术交流传统。今年选址北…

阅读更多 →
Cadence Allegro与Altium Designer封装原理图对比 2026/9/25 7:40:23

Cadence Allegro与Altium Designer封装原理图对比

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
AMS芯片设计从0.18um到55nm:工艺迁移中的模拟电路实战经验 2026/9/25 7:40:23

AMS芯片设计从0.18um到55nm:工艺迁移中的模拟电路实战经验

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
FreeRTOS在Proteus仿真STM32F103C8T6的踩坑实录:任务调度、SysTick与HardFault排查指南 2026/9/25 7:40:23

FreeRTOS在Proteus仿真STM32F103C8T6的踩坑实录:任务调度、SysTick与HardFault排查指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
PMOS管一键开关机电路设计:原理、参数计算与低功耗实战 2026/9/25 7:40:17

PMOS管一键开关机电路设计:原理、参数计算与低功耗实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉