Azure中Web Apps磁盘空间监控方法及PowerShell脚本求助
Azure Web Apps磁盘空间监控方案
Azure Web Apps本身没有内置的磁盘空间使用率监控指标,但可以通过以下两种方式实现监控:
一、直接监控的可选途径
- 应用服务诊断手动查看:在Azure Portal对应Web App的「诊断和解决问题」中,找到「可用性和性能」分类下的「存储使用情况」,可查看当前磁盘总空间、已用空间和剩余空间,但仅支持手动查询,无法设置自动告警。
- Azure Monitor自定义指标采集:通过调用Kudu API获取磁盘使用数据,配置Azure Monitor的自定义指标规则,实现持续监控和阈值告警。需要自行搭建指标采集逻辑(比如用Azure Function定期调用API并推送数据到Monitor)。
二、PowerShell脚本实现磁盘使用率监控
以下脚本可批量获取指定Web Apps的磁盘使用情况,支持输出结果或扩展配置告警:
# 登录Azure账号(首次运行需手动验证) Connect-AzAccount # 配置目标Web Apps信息(替换为你的资源组和应用名称) $targetWebApps = @( @{AppName = "tracktable-prod-angular"; ResourceGroup = "你的资源组名称"}, @{AppName = "tracktable-prod-ui"; ResourceGroup = "你的资源组名称"}, @{AppName = "tracktable-prod-maintenance"; ResourceGroup = "你的资源组名称"} ) foreach ($app in $targetWebApps) { # 获取Web App发布凭据 $publishProfile = Get-AzWebAppPublishingProfile -Name $app.AppName -ResourceGroupName $app.ResourceGroup -OutputFile null -Format WebDeploy $authUser = $publishProfile.PublishProfile[0].UserName $authPass = $publishProfile.PublishProfile[0].UserPWD # 构建Kudu API认证头 $base64Auth = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$authUser:$authPass")) $requestHeaders = @{Authorization = "Basic $base64Auth"} # 调用Kudu API获取磁盘统计数据 $kuduApiUrl = "https://$($app.AppName).scm.azurewebsites.net/api/vfs/" $diskData = Invoke-RestMethod -Uri $kuduApiUrl -Headers $requestHeaders -Method Get # 计算并输出使用率(转换为GB单位) $totalDiskGB = [math]::Round($diskData.parent.totalSize / 1GB, 2) $usedDiskGB = [math]::Round($diskData.parent.usedSize / 1GB, 2) $usagePercent = [math]::Round(($usedDiskGB / $totalDiskGB) * 100, 2) Write-Host "=== $($app.AppName) 磁盘使用情况 ===" Write-Host "总空间: $totalDiskGB GB" Write-Host "已使用: $usedDiskGB GB" Write-Host "使用率: $usagePercent %`n" # 可选:添加阈值告警逻辑(比如使用率超过80%时触发通知) if ($usagePercent -ge 80) { Write-Host "⚠️ 警告:$($app.AppName) 磁盘使用率已达 $usagePercent %,接近阈值!`n" # 此处可扩展发送邮件/Teams通知等逻辑 } }
脚本使用说明
- 确保已安装Azure PowerShell模块:
Install-Module -Name Az -AllowClobber -Scope CurrentUser - 替换脚本中的资源组名称为实际值
- 首次运行会弹出Azure账号登录验证窗口
- 可将脚本设置为Windows定时任务或Azure Automation Runbook,实现定期自动监控
内容的提问来源于stack exchange,提问作者Tneslo
相关产品推荐
相关产品推荐

