从PowerShell使用Get-AzMetric从Azure经典云服务获取“ CpuPercentage”指标将返回错误

问题描述

我有一个非常简单的要求,这让我有些悲伤。我正在尝试使用Get-AzMetric cmdlet for PowerShell来提取Azure经典云服务的平均cpu使用率百分比指标。 (这与在“监视->指标”下的门户网站中找到的信息相同。)

对于我的简单脚本,我已经隔离为以下内容

Import-Module Az
Connect-AzAccount

Get-AzMetric `
    -ResourceId "/subscriptions/8xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxf/...xxx" `
    -TimeGrain 00:15:00 `
    -MetricName "cpuPercentage"

ResourceId是直接从Azure门户中复制并粘贴的,用于我要为其获取指标的Classic Cloud服务。从各个方面看,我都在正确地遵循Get-AzMetric (As.Monitor) | Microsoft Docs中的文档,但是我一直收到BadRequest回复,该回复不是特别有见地:

Get-AzMetric : Exception type: ErrorResponseException,Message:
    Microsoft.Azure.Management.Monitor.Models.ErrorResponseException:
    Operation returned an invalid status code 'BadRequest'

关于我的请求可能有什么问题的任何想法?

解决方法

简而言之,在这种情况下,有两个错误。

1。如果直接从门户网站的Resource ID复制Properties,则它是云服务的资源ID,其资源类型为Microsoft.ClassicCompute/domainNames,不支持通过Get-AzMetric命令。

实际上,门户网站Metrics下的信息是针对Web角色的,其资源类型为Microsoft.ClassicCompute/domainNames/slots/roles

enter image description here

2。您的命令中的MetricName是错误的,应该是Percentage CPU,而不是CpuPercentage


因此,总而言之,实际上您的命令用于获取云服务中Web角色的指标,请更改以下参数,它将起作用。

$metric = Get-AzMetric -ResourceId "/subscriptions/<subscription-id>/resourceGroups/<group-name>/providers/Microsoft.ClassicCompute/domainNames/<cloudservice-name>/slots/production/roles/WebRole1" -TimeGrain 00:15:00 -MetricName "Percentage CPU"
$metric.Data

enter image description here