如何关联Resources与AzureActivity查询Azure孤儿磁盘的创建及成本信息
扩展Azure孤儿磁盘KQL查询:添加创建者、创建时间及成本信息
以下是针对你的需求给出的完整解决方案:
1. 获取资源创建者与创建时间
可以通过关联AzureActivity日志表来获取磁盘的创建者和创建时间,只需筛选磁盘创建操作的成功记录并匹配资源ID即可。
2. 查询近30天资源成本
Azure Resource Graph本身不直接提供成本数据,但可以通过关联CostManagementResources表(需先将成本数据导出到Log Analytics工作区)来获取指定磁盘的近30天总成本。
完整扩展后的KQL查询
Resources | where type has "microsoft.compute/disks" | extend diskState = tostring(properties.diskState) | where (managedBy == "" and diskState != 'ActiveSAS') or (diskState == 'Unattached' and diskState != 'ActiveSAS') | project id, diskState, resourceGroup, location, subscriptionId // 关联获取创建者和创建时间 | join kind=leftouter ( AzureActivity | where OperationNameValue == "Microsoft.Compute/disks/write" and ActivityStatusValue == "Success" | project ResourceId, CreatedBy = Caller, CreationTime = EventTimestamp ) on $left.id == $right.ResourceId // 关联获取近30天成本 | join kind=leftouter ( CostManagementResources | where TimeGenerated >= ago(30d) | where ResourceType == "Microsoft.Compute/disks" | summarize TotalCost = sum(Cost) by ResourceId ) on $left.id == $right.ResourceId // 整理输出列 | project id, diskState, resourceGroup, location, subscriptionId, CreatedBy, CreationTime, 近30天总成本 = TotalCost
关键注意事项
- 创建者信息限制:如果磁盘创建时间超过AzureActivity日志的保留期(默认90天),将无法获取到创建者数据,需确保日志保留策略覆盖目标资源的创建时间。
- 成本数据配置:
CostManagementResources表需要先在Azure Cost Management中配置数据导出到Log Analytics工作区,配置完成后数据会有1-2天的延迟。
内容的提问来源于stack exchange,提问作者Francesco Mantovani
相关产品推荐
相关产品推荐

