需协助编写获取Azure VM存储及SQL Server属性的Kusto查询
Kusto查询相关问题解答
一、指定资源组下Azure VM存储容量、可用空间查询
以下查询分两种场景,你可以根据自己能访问的数据源选择:
- 查询VM配置层面挂载的所有托管磁盘总容量
直接在Azure Resource Graph Explorer运行即可,不需要额外给VM装代理:
// 将下面变量替换为你要查询的目标资源组名称 let targetRG = "<替换为实际目标资源组名>"; Resources | where type == "microsoft.compute/virtualmachines" | where resourceGroup == targetRG | join kind=leftouter ( Resources | where type == "microsoft.compute/disks" | extend diskSizeGB = properties.diskSizeGB | project managedBy = tostring(properties.managedBy), diskSizeGB, diskName = name ) on $left.id == $right.managedBy | summarize 资源组内VM挂载磁盘总容量_GB = sum(diskSizeGB), 关联VM总数 = dcount(name) by resourceGroup
- 查询VM操作系统内的实际可用存储空间
需要你提前给目标VM启用VM Insights,将监控数据上报到Log Analytics工作区后,在对应工作区的日志查询界面运行:
let targetRG = "<替换为实际目标资源组名>"; // 可根据需要调整查询的时间范围 let queryTimeRange = 1h; InsightsMetrics | where TimeGenerated >= ago(queryTimeRange) | where Name == "FreeSpaceMB" | where Tags has targetRG | extend Drive = tostring(Tags.Drive), FreeSpaceGB = Val/1024, Computer = tostring(Tags.Computer) | join kind=inner ( InsightsMetrics | where TimeGenerated >= ago(queryTimeRange) | where Name == "CapacityMB" | extend Drive = tostring(Tags.Drive), TotalSpaceGB = Val/1024, Computer = tostring(Tags.Computer) | project Computer, Drive, TotalSpaceGB ) on Computer, Drive | summarize 单VM磁盘总容量_GB = sum(TotalSpaceGB), 单VM可用磁盘空间_GB = sum(FreeSpaceGB), 可用空间占比 = round((sum(FreeSpaceGB)/sum(TotalSpaceGB))*100,2) by Computer
二、VM内安装的SQL Server属性查询说明
可以通过Kusto查询到相关属性,分两种部署场景适配不同查询方式:
- 如果SQL Server是通过Azure市场SQL镜像部署、已经注册了SQL Server IaaS代理扩展(即Azure资源类型为
microsoft.sqlvirtualmachine/sqlvirtualmachines),直接在Azure Resource Graph运行以下查询即可拿到官方上报的SQL属性,不需要登录VM:
let targetRG = "<替换为实际目标资源组名>"; Resources | where type == "microsoft.sqlvirtualmachine/sqlvirtualmachines" | where resourceGroup == targetRG | project 关联VM名称 = name, SQL镜像版本 = properties.sqlImageOffer, SQL实例补丁级别 = properties.sqlServerPatchLevel, 实例名 = tostring(properties.sqlInstanceSettings.instanceName), 授权类型 = properties.sqlLicenseType, 自动备份状态 = properties.autoBackupSettings.enable
- 如果是手动在VM内部安装的SQL Server、没有注册SQL IaaS扩展,资源层的Kusto查询无法直接读取OS内的SQL配置。你可以选择给对应VM安装SQL IaaS扩展将实例注册到Azure资源层,或者给VM装Log Analytics代理、启用SQL Server评估解决方案,等SQL实例的配置、版本、数据库信息上报到Log Analytics工作区后,就可以用Kusto查询上报的全量SQL属性,包括实例版本、数据库列表、库大小、兼容级别、实例配置参数等。
内容的提问来源于stack exchange,提问作者sqldba
相关产品推荐
相关产品推荐

