如何监控Azure标准磁盘各文件共享的IOPS与吞吐量?
可行解决方案
1. Azure Monitor 自定义指标+工作簿可视化
- 进入存储账户的监控 > 指标页面,选择
File命名空间,可直接调用Transactions(对应IOPS,需按文件共享维度拆分)、Ingress/Egress(吞吐量)指标。 - 针对使用率计算:标准文件共享的IOPS配额为「每TiB容量对应1000 IOPS,上限10000 IOPS」,在指标图表中添加自定义计算,将实时IOPS除以对应共享的配额值,得到使用率百分比,直接设置82%的阈值警报。
- 用Azure Monitor工作簿搭建专属仪表盘,按单个文件共享拆分展示IOPS、吞吐量及使用率数据,实现直观监控。
2. 存储日志+Log Analytics 深度分析
- 开启存储账户的文件服务日志,并将日志流转至Log Analytics工作区。
- 编写Kusto查询提取各共享的IOPS、吞吐量并计算使用率,示例查询:
StorageFileLogs | where AccountName == "你的存储账户名" | summarize TotalRequests = count() by FileShareName, bin(TimeGenerated, 1m) | extend IOPS = TotalRequests / 60 | extend IOPSQuota = case( FileShareName == "共享1", 5000, FileShareName == "共享2", 10000, 1000 // 默认配额 ) | extend UsagePercentage = round((IOPS / IOPSQuota) * 100, 2) | project TimeGenerated, FileShareName, IOPS, UsagePercentage - 基于该查询创建警报规则,当使用率超过82%时自动触发通知。
3. PowerShell/CLI 自动化监控脚本
- 定期通过脚本获取各文件共享的容量,计算对应IOPS配额,再从Azure Monitor拉取实时IOPS数据,自动判断使用率并告警。示例PowerShell片段:
$storageAccountName = "你的存储账户名" $resourceGroupName = "你的资源组名" $ctx = (Get-AzStorageAccount -ResourceGroupName $resourceGroupName -Name $storageAccountName).Context $shares = Get-AzStorageShare -Context $ctx foreach ($share in $shares) { $shareSizeTiB = $share.UsageBytes / 1TiB $iopsQuota = [math]::Min($shareSizeTiB * 1000, 10000) # 获取最近5分钟的总请求数,计算IOPS $metrics = Get-AzMetric -ResourceId $share.Id -MetricName Transactions -TimeGrain 00:05:00 -AggregationType Total $iops = $metrics.Data.Total / 300 $usagePercent = round(($iops / $iopsQuota) * 100, 2) Write-Host "共享 $($share.Name): 当前IOPS=$iops,配额=$iopsQuota,使用率=$usagePercent%" if ($usagePercent -gt 82) { # 此处可添加邮件/Teams通知逻辑 Write-Host "⚠️ 警告:共享 $($share.Name) IOPS使用率已超过82%!" } }
4. 第三方监控平台集成
- 借助Datadog、New Relic等与Azure集成的第三方工具,它们会自动采集文件共享的全量指标,提供预配置的仪表盘和阈值告警,无需手动计算配额与使用率。
内容的提问来源于stack exchange,提问作者user286974
相关产品推荐
相关产品推荐

