如何用KQL创建Azure存储账户网络及Blob生命周期变更告警
Azure存储账户告警KQL查询方案
1. 存储账户网络配置变更告警查询
针对存储账户网络规则(防火墙、虚拟网络配置等)变更场景,优化后的KQL查询如下:
AzureActivity | where ResourceProviderValue == "MICROSOFT.STORAGE" | where CategoryValue == "Administrative" // 匹配网络规则集更新操作 | where OperationNameValue == "Microsoft.Storage/storageAccounts/updateNetworkRuleSets/action" // 可选:仅筛选成功执行的操作 | where ActivityStatusValue == "Success" // 解析Properties字段,提取变更前后的配置信息 | extend PropertiesParsed = parse_json(Properties) | extend OldNetworkConfig = PropertiesParsed.oldProperties.networkAcls | extend NewNetworkConfig = PropertiesParsed.newProperties.networkAcls // 输出关键字段,便于告警详情查看 | project EventTimestamp = EventSubmissionTimestamp, SubscriptionId, ResourceGroup, StorageAccountName = Resource, OperationName = OperationNameValue, OldNetworkConfig, NewNetworkConfig, Caller = Caller
逻辑说明:
- 精准匹配网络规则集更新的操作名,避免非目标事件误触发
- 解析Properties字段中的新旧配置,在告警中直观展示变更内容
- 可根据需求移除
ActivityStatusValue筛选,包含失败的变更操作
2. Blob存储层(热→冷/归档)转换告警查询
针对Blob从热层(HOT)转换为冷层(COOL)或归档层(ARCHIVE)的场景,分两种触发方式提供查询:
2.1 手动/API触发的Blob层变更(AzureActivity)
AzureActivity | where ResourceProviderValue == "MICROSOFT.STORAGE" | where CategoryValue == "Administrative" // 匹配Blob层设置操作 | where OperationNameValue == "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/setTier/action" | where ActivityStatusValue == "Success" // 解析Properties中的层信息 | extend PropertiesParsed = parse_json(Properties) | extend BlobName = PropertiesParsed.resourceUri | extend OldTier = PropertiesParsed.oldProperties.tier | extend NewTier = PropertiesParsed.newProperties.tier // 筛选热层转冷/归档的事件 | where OldTier == "Hot" and (NewTier == "Cool" or NewTier == "Archive") // 输出关键字段 | project EventTimestamp = EventSubmissionTimestamp, SubscriptionId, ResourceGroup, StorageAccountName = split(Resource, "/")[1], BlobName, OldTier, NewTier, Caller = Caller
2.2 生命周期规则触发的Blob层变更(StorageBlobLogs)
如果是通过存储账户生命周期规则自动转换Blob层,需查询StorageBlobLogs:
StorageBlobLogs | where OperationName == "SetBlobTier" | where StatusText == "Success" // 筛选热层转冷/归档的事件 | where TierFrom == "Hot" and (TierTo == "Cool" or TierTo == "Archive") // 输出关键字段 | project EventTimestamp = TimeGenerated, SubscriptionId, ResourceGroup, StorageAccountName = AccountName, ContainerName, BlobName, TierFrom, TierTo, OperationName
逻辑说明:
- 手动/API触发的变更记录在
AzureActivity中,生命周期规则触发的变更记录在StorageBlobLogs中 - 通过
TierFrom和TierTo精准筛选目标转换事件
告警配置步骤
- 进入Azure门户监控→警报→创建→警报规则
- 选择对应的日志工作区作为数据源
- 将上述KQL查询粘贴到自定义日志搜索条件中
- 设置触发条件(如查询返回结果数>0时触发)
- 配置通知组和动作组,完成告警创建
内容的提问来源于stack exchange,提问作者ramesh reddy
相关产品推荐
相关产品推荐

