You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用KQL和Log Analytics查询Azure近30天新建资源列表

问题与解决方案

问题说明

需要通过Log Analytics获取Azure订阅中近30天创建的所有新资源列表,但对AzureActivity表的OperationNameValue列取值存在以下困惑:

  1. 发现创建资源时OperationNameValue显示为Microsoft.Resource/Deployments/Write,但创建存储账户时未找到该值,这个值是否是正确的资源创建操作标识?
  2. 活动日志中部分条目OperationNameValue为MICROSOFT.RESOURCES/DEPLOYMENTS/WRITE,部分为Microsoft.Resource/Deployments/Write,二者有何区别?

附原查询:

AzureActivity
| where TimeGenerated between (startofday(ago(30d)) ..startofday(now()) )
|where OperationNameValue == "MICROSOFT.RESOURCES/DEPLOYMENTS/WRITE"
| parse tolower(_ResourceId) with "/subscriptions/" subscriptionId "/resourcegroups/"
resourceGroup "/providers/" provider "/" resourceType "/" resourceName
|where ActivityStatusValue == "Success"
|project TimeGenerated,OperationNameValue,ActivityStatusValue,Caller,resourceName,ResourceGroup
|order by TimeGenerated desc

解决方案

1. 资源创建操作的OperationNameValue说明

Microsoft.Resource/Deployments/Write(或其大写变体)是ARM模板部署操作的日志,仅记录通过ARM模板批量部署资源的行为,并非单个资源直接创建的操作标识。

直接创建单个资源时,对应的OperationNameValue格式为{资源提供商}/{资源类型}/write,例如:

  • 创建存储账户:Microsoft.Storage/storageAccounts/write
  • 创建虚拟机:Microsoft.Compute/virtualMachines/write
  • 创建应用服务:Microsoft.Web/sites/write

因此,要获取所有新创建的资源,需要匹配所有以/write结尾的操作,而非仅过滤部署操作。

2. 大小写变体的区别

MICROSOFT.RESOURCES/DEPLOYMENTS/WRITE和Microsoft.Resource/Deployments/Write本质是同一个操作,只是Azure日志记录时的大小写格式不统一导致的,没有功能或语义上的区别。查询时可以统一转换为小写(或大写)来避免遗漏。

3. 修正后的查询

以下查询可获取近30天所有成功创建的资源,覆盖直接创建和模板部署的场景:

AzureActivity
| where TimeGenerated between (startofday(ago(30d)) .. startofday(now()))
| where ActivityStatusValue == "Success"
// 匹配所有资源的创建/更新操作(以/write结尾),兼容大小写
| where tolower(OperationNameValue) endswith "/write"
// 解析资源信息,适配不同资源类型的ResourceId格式
| parse tolower(_ResourceId) with "/subscriptions/" subscriptionId "/resourcegroups/" resourceGroup "/providers/" provider "/" resourceType "/" resourceName
// 排除部署资源本身(不需要记录部署操作可删除此条件)
| where resourceType != "deployments"
| project 
    创建时间=TimeGenerated,
    操作类型=OperationNameValue,
    状态=ActivityStatusValue,
    创建者=Caller,
    资源名称=resourceName,
    资源类型=resourceType,
    资源组=ResourceGroup,
    订阅ID=subscriptionId
| order by 创建时间 desc

补充说明

  • 使用tolower(OperationNameValue) endswith "/write"统一匹配所有大小写的write操作,避免遗漏日志。
  • 添加resourceType != "deployments"可排除ARM部署操作本身的日志,仅保留实际创建的资源;如果需要包含部署记录,可删除此条件。
  • 扩展了project列,增加资源类型和订阅ID,让结果信息更完整。

内容的提问来源于stack exchange,提问作者randomguy1289

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 03:23:34