我正在使用下面发布的答案中找到的 AZ 指标命令,该命令通常有效,但结果经常返回 0,即使我知道该帐户正在消耗存储空间。另外,如果我稍后对相同的资源运行相同的命令,它会返回真实的结果。还有其他人使用这种方法并发现类似的结果吗?有什么建议可以解决这个问题吗?
此外,是否可以对存储帐户使用时间粒度/时间跨度?
使用 PowerShell 列出 blob、文件、表、队列的已用空间?
作为参考,我使用的命令是:(Get-AzMetric -ResourceId "{resource_id}" -MetricName "UsedCapacity").Data
我尝试在我的环境中重现相同的内容并遇到相同的问题。
当我在一段时间后再次运行该命令时,得到如下空值:
过了一会儿,当我再次运行上面的命令时,它成功地给出了响应。
此问题通常会发生,因为容量指标值将每天刷新(最多 24 小时)。
$DebugPreference = "Continue"
。作为解决方法,您可以对存储帐户使用timegrain/timespan,如下所示:
(Get-AzMetric -ResourceId "your_resource_id" -MetricName "UsedCapacity" -AggregationType Average -StartTime "02:00:00" -EndTime "04:00:00").Data
如果问题仍然存在,请提出错误/Azure 支持票证。
参考资料:
0 值结果 Get-AzMetric (UsedCapacity) · 问题 #15863 · Azure/azure-powershell · GitHub
问题在于,如果存储帐户未持续使用或出现故障,Azure 并不总是记录读数。当您查看资源中的使用情况图表时,您可以看到这一点,它显示一条虚线,这是丢失的数据。 Azure 仅在存储帐户处于活动状态时记录读数,从性能角度来看这是有意义的。
获得有效结果的方法是增加数据点返回的窗口。我的修复如下
$UsedCapacityDay = (Get-AzMetric -ResourceId <storage account ID> -StartTime (Get-Date).adddays(-1) -EndTime (Get-Date) -MetricName "UsedCapacity")
# need to use this method as some data points have a null reading, query above returns 24 hours (24 readings)
# with a value in the "average" property other properties min/max are always null
# we don't actually want an average for space so we get the max
$UsedCapacity = $UsedCapacityDay.data.average | measure-object -max
Azure 存储资源提供程序仅在有持续活动时向 Azure Monitor 报告可用性数据 上述声明的链接