【问题标题】:Powershell 'Get-AzureRmMetric' not returning any dataPowershell 'Get-AzureRmMetric' 不返回任何数据
【发布时间】:2017-09-15 14:08:33
【问题描述】:

我正在尝试使用 Get-AzureRmMetric 返回一些与我的资源之一相关的指标。

为此,我使用以下代码,但 cmdlet 未输出任何指标。

$resourceId = "/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/$resourceType/$resourceName"
Get-AzureRmMetric -ResourceId $resourceId -StartTime (get-date).AddHours(-2) -EndTime (get-date).AddHours(-1) -TimeGrain "01:00:00"

我已经更改了用于构造$resourceId 的每个变量,并且正如预期的那样Get-AzureRmMetric 会引发错误。这表明我正在将有效的资源 ID 传递给 cmdlet。

此外,我还捕获了Get-AzureRmMetric 的结果并检查了它的count 属性,即0。对我来说,似乎我正在为 cmdlet 提供所需的一切,但它并没有像 docs 中描述的那样工作。

我可以做些什么来获得我需要的指标?

完整代码

try
{
    $credtials = Get-AzureCredtials -AppId $AppId -AppSecretKey $AppSecretKey
    Login-AzureRmAccount -ServicePrincipal -Credential $credtials -TenantId $tenantId -SubscriptionId $subscriptionId

    $resource = Get-AzureRmResource -ResourceName $resourceName -ResourceGroupName $resourceGroup -ResourceType $resourceType
    $resourceId = $resource.ResourceId

    Get-AzureRmMetric -ResourceId $resourceId -TimeGrain '01:00:00' -StartTime (get-date).AddHours(-2) -EndTime (get-date).AddHours(-1) -MetricNames 'INTERR'
}
catch
{
    Write-Host "[ERROR] $($_.Exception.Message)" -ForegroundColor Red
    exit 1
}

更新

截至今天,我在使用 Get-AzureRmMetric 时看到一条关于弃用的消息。

警告:API 弃用:旧版指标 API 的使用将在下一版本中停止使用。这意味着此 cmdlet 的调用和输出发生了变化。

这正是我在 PowerShell 中看到的。

【问题讨论】:

  • 不确定您使用的是哪个指标,但我必须使用 set-rmcontext 确保我在正确的子中,然后我在资源 id 之后使用了以下内容:-TimeGrain (new-timespan -Minutes 1 ) -MetricNames 'CpuPercentage

标签: powershell azure metrics


【解决方案1】:

TimeGrain 不应该小于 StartTime 和 EndTime 的差吗?

【讨论】:

  • 时差是一小时,TimeGrain 也是如此。我试过缩短它以防万一,但遗憾的是这不是答案。谢谢。
【解决方案2】:

您使用的是最新版本的 AzureRM 模块吗?

我之所以问,是因为我没有看到您在命令中传递任何指标,并且应该会提示您提供要检索的指标名称。

【讨论】:

  • 是的,使用最新版本。 'Metrics' 参数是可选的,根据文档,如果未指定,则全部返回。谢谢。
【解决方案3】:
-StartTime (get-date).AddHours(-2)

您是否检查过当时正在运行的 Azure 资源 ID?您是否检查过该资源是否启用了指标?

这是我的脚本,这对我有用,请检查一下:

$id = '/subscriptions/subscriptionid/resourceGroups/jasontest1/providers/Microsoft.Compute/virtualMachines/jasonvm'
$st = (get-date).addhours(-1)
$et = (get-date)
$timeg = '01:00:00'
$data = Get-AzureRmMetric -ResourceId $id -TimeGrain $timeg -StartTime $st -EndTime $et -MetricNames 'Percentage CPU'

结果如下:


更新2

该命令适用于 Azure Powershell 3.4.0 版。

我们可以使用这个脚本来获取关于你的 Azure PowerShell 的信息:

Get-Module -ListAvailable -Name Azure -Refresh

警告:API 弃用:旧指标 API 的使用将 在下一个版本中停止。这意味着呼叫的变化 以及此 cmdlet 的输出。这是 PowerShell 输出:

关于它的更多信息,请参考这个answer

【讨论】:

  • 是的,资源可用。我正在从 EventHubs 和 Function Apps 之类的工具中查询指标,它们通过 HTTP 返回指标。谢谢。
  • 我们可以使用(Get-AzureRmMetricDefinition -ResourceId $id).name列出可用指标,然后使用指标名称获取值。请参考这个answer
  • @DavidGard 这对你有用吗?如果您需要更多帮助,请告诉我:)
  • @DavidGard 您的 PowerShell 是哪个版本?我们可以用这个脚本来检查Get-Module -ListAvailable -Name Azure -Refresh,不同版本使用不同的API,所以我们应该先检查一下。
  • 我也无法从Get-AzureRmMetricDefinition 获得结果。我正在使用 PowerShell 版本 5.1.14393.1715。我今天再次查看此内容,并注意到现在正在显示一条关于弃用的消息(请参阅我的问题更新)。谢谢。
猜你喜欢
  • 1970-01-01
  • 2013-04-30
  • 1970-01-01
  • 1970-01-01
  • 2020-10-17
  • 2021-03-25
  • 1970-01-01
  • 2020-01-10
  • 1970-01-01
相关资源
最近更新 更多