通过Azure的Resource Graph Explorer(https://portal.azure.cn/#blade/HubsExtension/ArgQueryBlade),可以查看到当前列表中的各种资源并导出CSV格式,以便日常的管理或生成Power BI等报表的源数据。
如查看虚拟机,MySQL,Redis,Application Gateway(应用程序网关),VNET(虚拟网络),公共IP等资源信息。只要找到这些资源的类型(type)后就可以写类SQL语句(Kusto)。如下:
上图中的SQL语句非常的简单,只是根据类型列出部分信息。 查询语句内容:
resources | where type in (‘microsoft.compute/virtualmachines‘, ‘microsoft.network/virtualnetworks‘, ‘microsoft.network/publicipaddresses‘, ‘microsoft.cache/redis‘, ‘microsoft.network/applicationGateways‘, ‘microsoft.dbformysql/servers‘) |project id, name, type, sku
而如果需要非常与其他资源的信息关联查询,则需要使用到 leftouter 等。如在问题描述中提到的要查看VM的内网IP地址和公网IP地址,由于内网IP地址属于虚拟网络资源的信息,而公网IP地址也是属于publicipaddresses的资源信息,所以需要使用两次leftouter 来关联VM信息查询。
完整的类SQL语句为:
Resources | where type =~ ‘microsoft.compute/virtualmachines‘ |project name, OS=tostring(properties.storageProfile.osDisk.osType), location, ipid = tolower(tostring(properties.networkProfile.networkInterfaces[0].id)) | join kind=leftouter ( Resources | where type =~ ‘microsoft.network/networkinterfaces‘ | project ipid = tolower(id), elasticPoolName = name, privateIP = properties.ipConfigurations[0].properties.privateIPAddress, publicIPid = properties.ipConfigurations[0].properties.publicIPAddress.id) on ipid | project-away ipid | project name, OS, location, privateIP, pubipid=tolower(tostring(publicIPid)) | join kind=leftouter ( Resources | where type =~ ‘microsoft.network/publicipaddresses‘ | project pubipid = tolower(id), publicIP = properties.ipAddress) on pubipid | project-away pubipid | project name, privateIP,publicIP, OS, location
第一次leftouter关联查询时候用的是私网IP地址资源的ID作为关联条件:
第二次leftouter关联查询时候用的是公网IP地址资源的ID作为关联条件:
注:主表数据和leftouter关联表数据使用的on关键字表示关联条件。
| project-away pubipid :表示在结果中移除pubipid字段显示。详见:project-away 运算符: https://docs.microsoft.com/zh-cn/azure/data-explorer/kusto/query/projectawayoperator
resources | where type =~ ‘microsoft.dbformysql/servers‘ | project name, properties, location
resources | where type =~ ‘microsoft.cache/redis‘ | project name, properties, location
resources | where type =~ ‘microsoft.network/virtualnetworks‘ | project name, addressPrefixes=tostring(properties.addressSpace.addressPrefixes[0]), location
resources | where type =~ ‘microsoft.network/applicationGateways‘ | project name, properties, location
注:配置信息从properties中查找,为JSON数据。可通过对象方式获取,如properties.addressSpace.addressPrefixes[0]。
Kusto查询语句示例:https://docs.microsoft.com/zh-cn/azure/data-explorer/kusto/query/samples?pivots=azuredataexplorer
【Azure Developer】在Azure Resource Graph Explorer中查看当前订阅下的所有资源信息列表并导出(如VM的名称,IP地址内网/公网,OS,区域等)
原文:https://www.cnblogs.com/lulight/p/14342556.html