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

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通知等逻辑
    }
}

脚本使用说明

  1. 确保已安装Azure PowerShell模块:Install-Module -Name Az -AllowClobber -Scope CurrentUser
  2. 替换脚本中的资源组名称为实际值
  3. 首次运行会弹出Azure账号登录验证窗口
  4. 可将脚本设置为Windows定时任务或Azure Automation Runbook,实现定期自动监控

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 03:23:26