问题描述

通过Azure的Resource Graph Explorerhttps://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,区域等)的更多相关文章

  1. 【Azure 环境】Azure Resource Graph Explorer 中实现动态数组数据转换成多行记录模式 - mv-expand

    问题描述 想对Azure中全部VM的NSG资源进行收集,如果只是查看一个VM的NSG设定,可以在门户页面中查看表格模式,但是如果想把导出成表格,可以在Azure Resource Graph Expl ...

  2. 【Azure Developer】使用Microsoft Graph API 批量创建用户,先后遇见的三个错误及解决办法

    问题描述 在先前的一篇博文中,介绍了如何使用Microsoft Graph API来创建Azure AD用户(博文参考:[Azure Developer]使用Microsoft Graph API 如 ...

  3. Azure上每个VM多个IP地址

    Azure的每个VM都有多种IP地址,包括DIP.VIP和PIP.具体如下: DIP地址是在VM里能够看到的IP地址,即私网地址:PIP地址是这个VM关联的公网IP地址,即公网地址:VIP地址是负载均 ...

  4. wstngfw中使用虚拟IP映射内网IP

    wstngfw中使用虚拟IP映射内网IP -------------------------------- Server01: IP: 192.168.195.73/24 GW: 192.168.19 ...

  5. 【Azure Developer】使用Microsoft Graph API创建用户时候遇见“401 : Unauthorized”“403 : Forbidden”

    问题描述 编写Java代码调用Mircrosoft Graph API创建用户时,分别遇见了"401 : Unauthorized"和"403 : Forbidden&q ...

  6. mysql数据库中,查看某个数据库下的表的存储类型都有哪些

    需求描述: 在备份数据库的时候,使用mysqldump进行数据库的备份,如果库中仅仅有innodb存储引擎, 那么使用--single-transaction就可以,如果还有其他的存储引擎类型就要使用 ...

  7. 【Azure Developer】Azure Graph SDK获取用户列表的问题: SDK中GraphServiceClient如何指向中国区的Endpoint:https://microsoftgraph.chinacloudapi.cn/v1.0

    问题描述 想通过Java SDK的方式来获取Azure 门户中所列举的用户.一直报错无法正常调用接口,错误信息与AAD登录认证相关,提示tenant not found. 想要实现的目的,通过代码方式 ...

  8. 【Azure Developer】使用Microsoft Graph API 如何批量创建用户,用户属性中需要包含自定义字段(如:Store_code,Store_name等)

    Microsoft Graph 是 Microsoft 365 中通往数据和智能的网关. 它提供统一的可编程模型,可用于访问 Microsoft 365.Windows 10 和企业移动性 + 安全性 ...

  9. 【Azure Developer】Azure Automation 自动化账号生成的时候怎么生成连接 与证书 (Connection & Certificate)

    Azure Automation :The Azure Automation service provides a highly reliable and scalable workflow exec ...

随机推荐

  1. Barcodex帮助文档

    前言 官方文档及ocx控件下载,下载很慢,直接上传到博客园文件管理中了. http://files.cnblogs.com/files/masonblog/barcodex.zip 帮助文档 Prop ...

  2. Python操作PDF-文本和图片提取(使用PyPDF2和PyMuPDF)

    PDF文件格式 如今,可移植文档格式(PDF)属于最常用的数据格式.在1990年,PDF文档的结构由Adobe定义.PDF格式的思想是,对于通信过程中涉及的双方(创建者,作者或发送者以及接收者)而言, ...

  3. Guns自动化生成代码使用

    一.Guns简介 Guns基于Spring Boot2,致力于做更简洁的后台管理系统.包含系统管理,代码生成,多数据库适配,SSO单点登录,工作流,短信,邮件发送,OAuth2登录,任务调度,持续集成 ...

  4. AWS中国区使用https访问部署在S3上的网站

    问题描述 最近一个项目需要通过https的方式访问部署在S3上的网站,通过搜索引擎找到一篇文章,可以在AWS Global实现整个过程.但是目前AWS中国区有限制,CloudFront不能使用AWS ...

  5. [LeetCode]501. Find Mode in Binary Search Tree二叉搜索树寻找众数

    这次是二叉搜索树的遍历 感觉只要和二叉搜索树的题目,都要用到一个重要性质: 中序遍历二叉搜索树的结果是一个递增序列: 而且要注意,在递归遍历树的时候,有些参数如果是要随递归不断更新(也就是如果递归返回 ...

  6. [Machine Learning] 单变量线性回归(Linear Regression with One Variable) - 线性回归-代价函数-梯度下降法-学习率

    单变量线性回归(Linear Regression with One Variable) 什么是线性回归?线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方 ...

  7. 在ubuntu上利用科大讯飞的SDK实现语音识别-语义识别等功能

    首先,参考科大讯飞的官方sdk中的案例,实现和机器的日常对话和控制. 具体步骤: 1. 通过麦克风捕获说话的声音,然后通过在线语音识别获取语音中的字符. 2. 将获取到的字符上传到科大讯飞的语义识别中 ...

  8. Java学习日报10.1

    学习内容一 ********************************** 代码 **********************************public class EnumTest ...

  9. webapplicationContext之ServletContext等相关概念说明

    1)ServletContext是一个全局的储存信息的空间,所有用户共用一个,其信息必须是线程安全且共享的. ServletContext有一个接口定义:ServletContext接口.此接口定义了 ...

  10. MobPush厂商通道排查

    开启log 一.添加开启log代码 有AndroidManifest.xml的 //在AndroidManifest.xml的application标签中添加 <meta-data androi ...