如何统计Azure内部负载均衡器转发至各后端VM的请求数?
统计Azure内部负载均衡器转发至各后端VM的请求数
当然有办法实现这个需求啦,我整理了几个实用的方案,你可以根据自己的场景来选择:
方案一:利用Azure Monitor内置指标(最便捷)
Azure内部负载均衡器本身提供了可以按后端实例拆分的请求统计指标,操作步骤很简单:
- 登录Azure门户,找到你的内部负载均衡器资源
- 切换到「监控」>「指标」页面
- 在指标选择区,先选命名空间为「Microsoft.Network/loadBalancers」,再选指标为「Backend Request Count」
- 点击「拆分依据」,选择「Backend IP Configuration」,这样图表就会自动拆分出每个后端VM对应的请求数量
- 你还可以调整时间范围、添加筛选条件,甚至把这个指标图表钉到Azure仪表板上长期监控
这个方案的优点是零额外配置,直接用Azure原生能力,指标默认是5分钟粒度,足够大部分监控场景使用。
方案二:通过NSG流日志+Log Analytics实现精细化统计
如果需要更详细的请求维度(比如源IP、协议类型、请求时间分布),可以用NSG流日志配合Log Analytics来分析:
- 先给后端VM所在的子网或者VM对应的网络安全组(NSG)开启流日志,目标选择你的Log Analytics工作区
- 等待10-15分钟让日志开始流入后,进入Log Analytics工作区,编写Kusto查询来统计:
AzureNetworkAnalytics_CL | where ResourceType_s == "LOADBALANCER" and OperationName_s == "LoadBalancerFlowLog" | where DestinationIp_s in ("10.0.0.4", "10.0.0.5") // 替换成你的后端VM私有IP | summarize 请求数=count() by 后端VM_IP=DestinationIp_s, 时间窗口=bin(TimeGenerated, 1h) | sort by 时间窗口 desc
这个查询会按小时统计每个VM收到的请求数,你可以根据需求调整时间窗口(比如1分钟、1天)或者添加更多筛选条件(比如特定端口、协议)。
方案三:在后端VM本地统计(适合小批量VM)
如果你的VM数量不多,也可以直接在VM内部统计收到的请求数:
- Linux VM:可以用
netstat、ss或者tcpdump工具,比如统计80端口的已建立连接数:
ss -tunap | grep ESTAB | grep :80 | wc -l
如果是Web服务(比如Nginx、Apache),还可以直接查看服务的访问日志,用awk等工具统计请求数:
awk '{print $1}' /var/log/nginx/access.log | wc -l
- Windows VM:打开性能监视器(PerfMon),添加「TCPv4\Connections Established」计数器,或者针对IIS添加「Web Service\Total Requests」计数器,来统计请求数
注意:这种方法需要排除VM之间的内部通信请求,确保统计的是LB转发过来的流量。
内容的提问来源于stack exchange,提问作者user12041422
相关产品推荐
相关产品推荐

