Azure PowerShell查询指定时段各Web应用调用次数的方法咨询
回答:查询Azure Web App历史访问/调用次数的工具选择与操作指南
首先明确:你确实可以用Get-AzureRmLog(不过官方已弃用AzureRM模块,更推荐使用Az模块的Get-AzLog),但如果要查询2018年1月至今的长期历史数据,Azure Monitor Logs(原Log Analytics)是更合适的方案,下面分两部分给你说明:
一、用Get-AzLog的局限性与示例用法
Get-AzLog本质是查询Azure活动日志(Activity Log),但它有个关键限制:活动日志默认仅保留90天。如果你的2018年至今的数据没有提前导出到存储账户或Log Analytics,那Get-AzLog无法获取这么早的历史记录。
如果你的目标时间范围在最近90天内,可以用以下命令统计Web App的请求次数:
# 切换到Az模块(先安装并导入Az模块) Import-Module Az.Accounts Connect-AzAccount # 筛选指定时间范围的Microsoft.Web/Sites相关日志,按站点分组统计 Get-AzLog -ResourceType "Microsoft.Web/Sites" -StartTime "2024-01-01" -EndTime (Get-Date) | Group-Object ResourceName | Select-Object Name, @{Name="RequestCount"; Expression={$_.Count}} | Sort-Object RequestCount Descending
但再次强调:这个方法只适用于最近90天的数据,无法覆盖2018年至今的全周期需求。
二、Azure Monitor Logs(Log Analytics)的操作步骤
要查询长期历史数据,必须依赖Log Analytics——前提是你已经为Web App配置了诊断设置,将日志(比如HTTP访问日志、应用日志)持续发送到Log Analytics工作区。如果之前没配置,那配置前的历史数据无法回溯,只能从配置后开始收集。
具体操作流程:
确认诊断设置已启用:
- 进入你的Web App资源 -> 左侧菜单“监视”下的“诊断设置”
- 确保已创建诊断设置,勾选要收集的日志类别(比如
AppServiceHTTPLogs、Requests),并选择发送到你的Log Analytics工作区。
编写KQL查询统计访问次数:
- 进入Azure门户的
Azure Monitor-> 左侧菜单“日志”,选择对应的Log Analytics工作区。 - 使用Kusto查询语言(KQL)编写统计语句,以下是常用示例:
示例1:统计每个Web App的总访问次数(2018年至今)
AppServiceHTTPLogs | where TimeGenerated >= datetime(2018-01-01) | summarize TotalRequests = count() by SiteName | sort by TotalRequests desc示例2:按HTTP方法(GET/POST等)细分统计每个站点的请求
AppServiceHTTPLogs | where TimeGenerated >= datetime(2018-01-01) | summarize TotalRequests = count() by SiteName, RequestMethod | sort by SiteName, TotalRequests desc示例3:按时间维度(每月)统计站点访问趋势
AppServiceHTTPLogs | where TimeGenerated >= datetime(2018-01-01) | summarize MonthlyRequests = count() by SiteName, bin(TimeGenerated, 30d) | sort by SiteName, TimeGenerated asc- 进入Azure门户的
可视化与保存结果:
- 查询结果出来后,点击顶部的“可视化”按钮,可选择柱状图、折线图等展示形式。
- 可以将查询或可视化结果保存到Azure仪表板,方便后续快速查看。
补充说明
如果你的Web App集成了Application Insights,也可以在App Insights的“日志”或“指标”中查询请求统计——但同样需要App Insights在2018年就已配置,才能获取对应时间段的数据。
内容的提问来源于stack exchange,提问作者Daisy
相关产品推荐
相关产品推荐

