【Azure Developer】在Azure Resource Graph Explorer中查看当前订阅下的所有资源信息列表并导出(如VM的名称,IP地址内网/公网,OS,区域等)
问题描述
通过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
- where : 指定查询的过滤条件
- project :只输出后面列出的属性值
而如果需要非常与其他资源的信息关联查询,则需要使用到 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作为关联条件:
- ipid = tolower(tostring(properties.networkProfile.networkInterfaces[0].id)) 为从VM资源中获取的私网IP资源ID
- ipid = tolower(id) 为类型'microsoft.network/networkinterfaces'的资源ID
第二次leftouter关联查询时候用的是公网IP地址资源的ID作为关联条件:
- publicIPid = properties.ipConfigurations[0].properties.publicIPAddress.id为从第一个leftouter表中获取到公网IP资源ID, 为了保持与第二个leftouter中的字段名一致,所以在project中转换列名pubipid=tolower(tostring(publicIPid))
- pubipid = tolower(id) 为类型'microsoft.network/networkinterfaces'的资源ID
注:主表数据和leftouter关联表数据使用的on关键字表示关联条件。
| project-away pubipid :表示在结果中移除pubipid字段显示。详见:project-away 运算符: https://docs.microsoft.com/zh-cn/azure/data-explorer/kusto/query/projectawayoperator
以上查询语句的结果如图:

查看MySQL数据库信息,显示数据库服务名,配置和资源所在区域信息
resources
| where type =~ 'microsoft.dbformysql/servers'
| project name, properties, location
查看Redis数据库信息,显示服务名,配置和资源所在区域信息
resources
| where type =~ 'microsoft.cache/redis'
| project name, properties, location
查看虚拟网络(VNET)信息,显示网络名,配置的内网网段,资源所在区域信息
resources
| where type =~ 'microsoft.network/virtualnetworks'
| project name, addressPrefixes=tostring(properties.addressSpace.addressPrefixes[0]), location
查看Application Gateway(应用程序网关)信息,显示服务名称,配置和资源所在区域信息
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,区域等)的更多相关文章
- 【Azure 环境】Azure Resource Graph Explorer 中实现动态数组数据转换成多行记录模式 - mv-expand
问题描述 想对Azure中全部VM的NSG资源进行收集,如果只是查看一个VM的NSG设定,可以在门户页面中查看表格模式,但是如果想把导出成表格,可以在Azure Resource Graph Expl ...
- 【Azure Developer】使用Microsoft Graph API 批量创建用户,先后遇见的三个错误及解决办法
问题描述 在先前的一篇博文中,介绍了如何使用Microsoft Graph API来创建Azure AD用户(博文参考:[Azure Developer]使用Microsoft Graph API 如 ...
- Azure上每个VM多个IP地址
Azure的每个VM都有多种IP地址,包括DIP.VIP和PIP.具体如下: DIP地址是在VM里能够看到的IP地址,即私网地址:PIP地址是这个VM关联的公网IP地址,即公网地址:VIP地址是负载均 ...
- wstngfw中使用虚拟IP映射内网IP
wstngfw中使用虚拟IP映射内网IP -------------------------------- Server01: IP: 192.168.195.73/24 GW: 192.168.19 ...
- 【Azure Developer】使用Microsoft Graph API创建用户时候遇见“401 : Unauthorized”“403 : Forbidden”
问题描述 编写Java代码调用Mircrosoft Graph API创建用户时,分别遇见了"401 : Unauthorized"和"403 : Forbidden&q ...
- mysql数据库中,查看某个数据库下的表的存储类型都有哪些
需求描述: 在备份数据库的时候,使用mysqldump进行数据库的备份,如果库中仅仅有innodb存储引擎, 那么使用--single-transaction就可以,如果还有其他的存储引擎类型就要使用 ...
- 【Azure Developer】Azure Graph SDK获取用户列表的问题: SDK中GraphServiceClient如何指向中国区的Endpoint:https://microsoftgraph.chinacloudapi.cn/v1.0
问题描述 想通过Java SDK的方式来获取Azure 门户中所列举的用户.一直报错无法正常调用接口,错误信息与AAD登录认证相关,提示tenant not found. 想要实现的目的,通过代码方式 ...
- 【Azure Developer】使用Microsoft Graph API 如何批量创建用户,用户属性中需要包含自定义字段(如:Store_code,Store_name等)
Microsoft Graph 是 Microsoft 365 中通往数据和智能的网关. 它提供统一的可编程模型,可用于访问 Microsoft 365.Windows 10 和企业移动性 + 安全性 ...
- 【Azure Developer】Azure Automation 自动化账号生成的时候怎么生成连接 与证书 (Connection & Certificate)
Azure Automation :The Azure Automation service provides a highly reliable and scalable workflow exec ...
随机推荐
- Python -- 修改、添加和删除元素
大多数列表将是动态的,这意味着列表创建后,将随着程序的运行增删元素. 修改列表元素 修改列表元素的语法与访问列表元素的语法类似.要修改列表元素,可指定表名和要修改的元素指引,再指定该元素的新值. #代 ...
- Latex向上\向下取整语法 及卷积特征图高宽计算公式编辑
向下\向上取整 在编辑卷积网络输出特征高宽公式时,需用到向下取整,Mark一下. 向下取整 \(\lfloor x \rfloor\) $\lfloor x \rfloor$ 向上取整 \(\lcei ...
- 使用CDN后如何配置Apache使其记录访客真实IP
今天想看看哪些地区的人访问过我的网站,于是打开Apache网站响应日志,把访客IP复制到百度,发现搜到的全部都是我是用的CDN的节点IP,真实的访客IP并没有被记录. 如图所示,上面的103.45.7 ...
- C#脚本引擎CS-Script
最近想要在程序中嵌入一个C#脚本引擎,在.NET Framework时代用过一个叫做CS-Script的东西,感觉还是不错,发现现在也支持.NET Core了,试着嵌入一下. 比较 要说能够运行C#脚 ...
- 磁盘IO工作机制
磁盘IO工作机制 ref: <深入分析java web 技术内幕> by:许令波 几种访问文件的方式 文件读取和写入的 IO 操作都是调用操作系统提供的接口,因为磁盘设备是由操作系统管理的 ...
- java中给多个微信好友自动发信息
package weixin; import java.awt.*; import java.awt.datatransfer.Clipboard; import java.awt.datatrans ...
- js--数组的every()和some()方法检测数组是否满足条件的使用介绍
前言 阅读本文之前先来思考一个问题,如何如实现判断一个数组中是否存在满足条件的元素,如何去判断数组中是否全部元素都满足判断条件,这里可能能想到使用for循环遍历数组,if()判断每一项是否符合条件,同 ...
- Eureka Server启动过程分析
1.首先,SpringCloud充分利用了SpringBoot的自动装配特点 eureka-server的jar包,发现在META-INF下面的配置文件spring.factories,里面记录了Sp ...
- #3使用html+css+js制作网页 制作登录网页
#3使用html+css+js制作网页 制作登录网页 本系列链接 2制作登录网页 2.1 准备 2.1.1 创建文件夹 2.1.2 创建主文件 2.2 html部分 2.2.1 网站信息 2.2.2 ...
- 【环境搭建】SSM 整合使用
SSM 整合使用 文章源码 搭建整合环境 整合说明 SSM 整合可以使用多种方式,但是选择 XML + 注解 的方式最为合适. 整合思路 搭建整合环境 Spring 环境搭建并测试 Spring 整合 ...