如何用KQL查询Azure存储账户已用容量并配置超限告警
批量查询指定订阅存储账户容量及配置阈值告警实现方案
问题核心原因
你之前查询不到容量相关指标,是因为用的availability是存储服务可用性指标,和容量无关。存储账户已用容量对应的平台指标名为UsedCapacity,原始单位为字节。
1、批量查询名称为「storage」订阅下所有存储账户已用容量
确保目标订阅下存储账户的平台指标已通过诊断设置上报到你查询使用的Log Analytics工作区后,直接运行以下KQL即可拿到所有存储账户的已用容量(自动换算为GB单位):
// 筛选名称为storage的目标订阅 ResourceContainers | where ResourceType == "microsoft.resources/subscriptions" | where Name == "storage" | project _SubscriptionId = SubscriptionId, SubscriptionName = Name // 关联存储账户已用容量指标 | join kind=inner ( AzureMetrics | where TimeGenerated > ago(1d) | where ResourceProvider == "MICROSOFT.STORAGE" | where MetricName =~ "UsedCapacity" | extend UsedCapacityGB = Average / 1024 / 1024 / 1024 // 字节转GB | project TimeGenerated, ResourceGroup, _SubscriptionId, StorageAccountName = Resource, UsedCapacityGB ) on _SubscriptionId | project TimeGenerated, SubscriptionName, ResourceGroup, StorageAccountName, UsedCapacityGB
2、批量配置容量超1024GB告警规则(无需单账户手动配置)
两种可落地的批量管理方案,按需选择:
- 方案一:Log Analytics日志告警(配置最简单)
新建日志告警规则,作用范围直接选中名称为「storage」的目标订阅,关联存储指标上报的Log Analytics工作区,查询逻辑用上面的KQL语句,告警触发条件设置为结果中UsedCapacityGB值大于1024,配置好评估周期、触发频率和通知动作组即可。
该方案一次配置后自动覆盖订阅下所有现有存储账户,后续新建的存储账户只要按诊断配置上报指标到对应LA工作区,会自动纳入告警检测范围,无需额外调整规则。 - 方案二:Azure Policy批量部署平台指标告警(管控性更强)
如果需要用原生平台指标告警(不用依赖日志查询链路),可以直接给「storage」订阅分配内置的存储账户容量告警部署策略,设置阈值为1024GB、关联指定告警动作组。策略会自动给订阅下所有符合条件的存储账户创建告警规则,后续新建存储账户时也会自动完成告警配置,若告警被手动删除,策略会在合规性评估时自动重建,适合大规模生产环境管控。
排查提示:如果运行KQL查不到
UsedCapacity数据,先检查存储账户的诊断设置,确认已将平台指标发送到当前查询使用的Log Analytics工作区,存储账户的UsedCapacity指标默认开启,无需额外在存储账户侧开通。
内容的提问来源于stack exchange,提问作者Norrin Rad
相关产品推荐
相关产品推荐

