使用Get-AzMetric获取Azure VM CPU平均利用率数据异常求助
Azure VM CPU利用率指标数据不符的排查方案
可能的原因及解决方法
时区不匹配
你脚本里的$st和$et用的是UTC时间(带Z后缀),而Azure门户默认显示本地时区的数据。比如输出里的12/21/2023 11:45:00 AM是UTC时间,转换为本地时区后,可能和你在门户查看的时间窗口完全不对应,导致对比的不是同一段数据。聚合类型与粒度不匹配
Get-AzMetric默认返回的聚合结果可能未明确限定,且你设置的TimeGrain 00:15:00是15分钟粒度的平均值,而Azure门户默认展示的可能是1分钟粒度的实时采样值或其他聚合(比如最大值),不同粒度的统计逻辑会导致数值差异。资源ID错误
确认$vm.Id对应的是目标VM的正确资源ID,避免因VM对象引用错误,获取了其他VM的指标。可以直接输出$vm.Id,和Azure门户中VM的资源ID做比对。统计逻辑差异
Azure Monitor的"Percentage CPU"指标,15分钟粒度的平均值是该窗口内所有采样点的算术平均,而门户中可能展示的是实时瞬时值、峰值或其他统计维度,需要确认两者的统计方式一致再做对比。
修正后的脚本示例
# 将UTC时间转换为本地时区,匹配门户显示的时间范围 $st = [DateTime]::Parse('2023-12-19T12:00:00Z').ToLocalTime() $et = [DateTime]::Parse('2023-12-21T12:00:00Z').ToLocalTime() # 明确指定聚合类型,同时获取多粒度数据用于对比 $cpu = Get-AzMetric -ResourceId $vm.Id ` -TimeGrain 00:01:00, 00:15:00 ` -StartTime $st ` -EndTime $et ` -MetricName "Percentage CPU" ` -AggregationType Average, Maximum ` -DetailedOutput # 格式化输出,方便对比不同粒度和聚合的数据 $cpu.data | Format-Table TimeStamp, Average, Maximum -AutoSize
内容的提问来源于stack exchange,提问作者CoCoBl
相关产品推荐
相关产品推荐

