问题描述
我有一个非常简单的要求,这让我有些悲伤。我正在尝试使用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
。
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