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

如何用PowerShell获取Azure应用服务的CPU及内存使用率?

Azure应用服务CPU/内存百分比指标获取与告警方案

问题描述

需要获取Azure应用服务的CPU使用率(百分比)和内存占用率(百分比),监测特定时段内CPU是否处于高占用状态,以此判断资源是否过载,并触发邮件告警。当前使用Get-AzMetricDefinition命令,但无法获取实际的百分比数据,寻求可行的PowerShell解决方案。

当前使用的命令:

Get-AzMetricDefinition -ResourceId 
"/subscriptions/<subscriptionid>/resourceGroups/Default-Web- 
EastUS/providers/microsoft.web/sites/website2" -DetailedOutput -MetricName 
"BytesSent,CpuTime"

解决方案

1. 明确核心命令差异

Get-AzMetricDefinition仅用于查询可用的指标定义(比如指标名称、支持的聚合类型),不能获取实时/历史的指标数值。要获取实际指标数据,需使用Get-AzMetric命令。

2. 获取CPU/内存百分比指标数据

Azure应用服务提供直接的百分比类指标:

  • CPU使用率:CPUPercentage
  • 内存占用率:MemoryPercentage

示例命令(获取过去1小时、粒度5分钟的指标数据):

# 定义资源ID
$resourceId = "/subscriptions/<subscriptionid>/resourceGroups/Default-Web-EastUS/providers/microsoft.web/sites/website2"

# 获取指定时段的CPU、内存百分比数据
$metrics = Get-AzMetric -ResourceId $resourceId `
    -MetricName "CPUPercentage", "MemoryPercentage" `
    -StartTime (Get-Date).AddHours(-1) ` # 起始时间:1小时前
    -EndTime (Get-Date) ` # 结束时间:当前时间
    -TimeGrain 00:05:00 ` # 指标粒度:5分钟
    -AggregationType Average, Maximum # 聚合方式:平均值、最大值

3. 筛选CPU高占用时段

可以通过筛选指标数据中CPU最大值超过阈值(比如80%)的记录,判断是否存在资源过载:

# 筛选CPU占用率最大值超过80%的时段
$highCpuRecords = $metrics | 
    Where-Object { $_.Name.Value -eq "CPUPercentage" } |
    Select-Object -ExpandProperty Data |
    Where-Object { $_.Maximum -gt 80 }

4. 触发邮件告警

如果检测到高占用记录,使用PowerShell内置的Send-MailMessage发送告警邮件:

if ($highCpuRecords.Count -gt 0) {
    # 构造邮件内容
    $alertContent = "Azure应用服务检测到CPU高占用情况:`n`n"
    $alertContent += $highCpuRecords | Format-Table TimeStamp, Maximum -AutoSize | Out-String

    # 发送邮件(根据实际SMTP配置调整参数)
    Send-MailMessage -From "azure-alert@yourdomain.com" `
        -To "admin@yourdomain.com" `
        -Subject "[告警] Azure应用服务CPU占用过高" `
        -Body $alertContent `
        -SmtpServer "smtp.yourdomain.com" `
        -Port 587 `
        -UseSsl `
        -Credential (Get-Credential) # 若SMTP需要认证,保留此参数
}

5. 验证可用指标(可选)

如果不确定指标名称是否正确,可再次用Get-AzMetricDefinition确认:

Get-AzMetricDefinition -ResourceId $resourceId -MetricName "CPUPercentage", "MemoryPercentage"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 15:00:59