使用 Powershell 使用 AZMetrics 获取存储帐户大小通常返回 0

问题描述 投票:0回答:2

我正在使用下面发布的答案中找到的 AZ 指标命令,该命令通常有效,但结果经常返回 0,即使我知道该帐户正在消耗存储空间。另外,如果我稍后对相同的资源运行相同的命令,它会返回真实的结果。还有其他人使用这种方法并发现类似的结果吗?有什么建议可以解决这个问题吗?

此外,是否可以对存储帐户使用时间粒度/时间跨度?

使用 PowerShell 列出 blob、文件、表、队列的已用空间?

作为参考,我使用的命令是:(Get-AzMetric -ResourceId "{resource_id}" -MetricName "UsedCapacity").Data

azure powershell azure-storage azure-powershell azure-storage-account
2个回答
2
投票

我尝试在我的环境中重现相同的内容并遇到相同的问题。

当我在一段时间后再次运行该命令时,得到如下空值:

过了一会儿,当我再次运行上面的命令时,它成功地给出了响应。

此问题通常会发生,因为容量指标值将每天刷新(最多 24 小时)。

  • 您可以打开调试来了解到底出了什么问题。
  • 要打开,请使用
    $DebugPreference = "Continue"
  • 您可以使用 Get-AzMetricDefinition 了解支持的时间间隔。

作为解决方法,您可以对存储帐户使用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

Get-AzMetric 返回空白结果 - githubmemory


0
投票

问题在于,如果存储帐户未持续使用或出现故障,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 报告可用性数据 上述声明的链接

© www.soinside.com 2019 - 2024. All rights reserved.