You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure磁盘IOPS及读写延迟获取:Log Analytics报错与PowerShell方案问询

嘿,我来帮你梳理几个可行的方案——不用依赖PerfMon计数器或者纠结Log Analytics的报错,直接通过PowerShell就能拿到Azure VM磁盘的IOPS和读写延迟数据,和Azure门户展示的是同一数据源哦。

直接用PowerShell获取Azure磁盘性能数据

Azure Monitor提供了原生的指标API,我们可以用Get-AzMetric cmdlet直接拉取磁盘的核心性能指标,完全绕开PerfMon计数器。

1. 查询单个磁盘的IOPS与读写延迟

先给你一个可直接复用的脚本,替换成你的资源信息就能运行:

# 替换成你的订阅、资源组和磁盘名称
$subscriptionId = "你的订阅ID"
$resourceGroupName = "你的资源组名"
$diskName = "目标磁盘名称"

# 设置Azure上下文
Set-AzContext -Subscription $subscriptionId

# 获取磁盘的资源ID
$disk = Get-AzDisk -ResourceGroupName $resourceGroupName -Name $diskName
$diskResourceId = $disk.Id

# 拉取过去24小时的核心指标(5分钟粒度)
$metrics = Get-AzMetric -ResourceId $diskResourceId `
    -MetricName "DiskReadOperationsPerSecond", "DiskWriteOperationsPerSecond", "DiskReadLatency", "DiskWriteLatency" `
    -TimeGrain 00:05:00 `
    -StartTime (Get-Date).AddHours(-24) `
    -EndTime (Get-Date)

# 格式化输出结果
foreach ($metric in $metrics) {
    Write-Host "`n=== $($metric.Name.LocalizedValue) ==="
    $metric.Data | Select-Object TimeStamp, Average | Format-Table -AutoSize
}

这里的指标对应关系:

  • DiskReadOperationsPerSecond:每秒磁盘读取操作数(读IOPS)
  • DiskWriteOperationsPerSecond:每秒磁盘写入操作数(写IOPS)
  • DiskReadLatency:平均磁盘读取延迟(单位:毫秒)
  • DiskWriteLatency:平均磁盘写入延迟(单位:毫秒)

2. 批量查询VM关联的所有磁盘

如果想一次性拿到某台VM的所有磁盘数据,可以先获取VM的磁盘列表,再批量查询:

$vmName = "目标VM名称"
$vm = Get-AzVM -ResourceGroupName $resourceGroupName -Name $vmName

# 遍历系统盘+数据盘
foreach ($disk in $vm.StorageProfile.DataDisks + $vm.StorageProfile.OsDisk) {
    $diskResourceId = (Get-AzDisk -ResourceGroupName $resourceGroupName -Name $disk.Name).Id
    Write-Host "`n--- 磁盘: $($disk.Name) ---"
    $metrics = Get-AzMetric -ResourceId $diskResourceId `
        -MetricName "DiskReadOperationsPerSecond", "DiskWriteOperationsPerSecond", "DiskReadLatency", "DiskWriteLatency" `
        -TimeGrain 00:05:00 `
        -StartTime (Get-Date).AddHours(-24)
    $metrics.Data | Select-Object @{Name="指标"; Expression={$_.MetricName}}, TimeStamp, Average | Format-Table -AutoSize
}
(可选)Log Analytics查询报错的小提示

如果你之后还是想搞定Log Analytics的查询,常见报错原因一般是这两个:

  • 没有给VM配置诊断设置,把LogicalDisk(*)\Avg. Disk sec/Write这类PerfMon计数器推送到Log Analytics工作区
  • 查询语法有误,正确的Kusto查询示例应该是:
Perf
| where ObjectName == "LogicalDisk" and CounterName in ("Avg. Disk sec/Write", "Avg. Disk sec/Read")
| where Computer == "你的VM名称"
| summarize avg(CounterValue) by CounterName, bin(TimeGenerated, 5m)
| render timechart

不过既然你想绕开PerfMon,前面的PowerShell方法肯定更直接。

内容的提问来源于stack exchange,提问作者Norrin Rad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:53:04