如何在Azure中监控App Service与数据库之间的网络流量
实现方案总览
以下是同区域同资源组下,采集Azure App Service与数据库之间双向流量的可落地步骤,全程不需要额外采购第三方工具:
1. 前置检查
- 确认你的App Service属于V2及以上定价层(基础、标准、高级、弹性高级层均支持,免费/共享层无网络监控相关权限)
- 确认你对当前资源组持有参与者及以上访问权限,否则无法创建监控相关的配套资源
- 提前记录两个核心信息:App Service的全部出站IP(可在App Service控制台「属性」页获取)、数据库的内网IP/服务端口(比如Azure SQL默认端口1433、MySQL默认端口3306)
2. 给App Service接入VNet并绑定网络安全组
App Service默认是多租户共享网络架构,没有独立的网络流量采集入口,需要先接入VNet才能拿到流量数据:
- 进入App Service控制台,左侧导航选择「网络」,找到「VNet集成」选项
- 点击「添加VNet」,选择同区域的现有VNet(无可用VNet可直接新建,确保关联的子网大小不小于/27),完成集成
- 给刚才绑定App Service的子网关联一个网络安全组(NSG),原有放行App Service访问数据库的规则不需要调整,保持生效即可
3. 开启NSG流日志功能
NSG流日志是采集子网内所有双向流量的核心功能:
- 进入上一步绑定的NSG控制台,左侧导航找到「流日志」,点击「创建」
- 按以下参数配置流日志:
- 基础信息:NSG选择刚才关联的目标NSG,资源组、区域和现有业务资源保持一致
- 存储配置:选择同区域的存储账户存储原始日志(无可用账户可新建,选标准性能层即可),日志保留天数按需设置,短期排查设7天、合规需求可设30天以上
- 流量分析:开启该功能,时间粒度选10分钟,关联同区域的Log Analytics工作区(无可用工作区可直接新建)
- 点击创建,等待5-10分钟配置即可生效
4. 筛选查询App Service与数据库的专属流量
配置生效后,直接在关联的Log Analytics工作区运行以下KQL查询语句,即可精准获取两者之间的双向流量数据:
AzureNetworkAnalytics_CL | where SubType_s == "FlowLog" // 匹配App Service到数据库的双向流量 | where (SrcIp_s in ("<App Service出站IP1>","<App Service出站IP2>") and DestIp_s == "<数据库内网IP>") or (SrcIp_s == "<数据库内网IP>" and DestIp_s in ("<App Service出站IP1>","<App Service出站IP2>")) // 匹配数据库服务端口 | where DestPort_d == <数据库服务端口> // 输出核心字段 | project 流量开始时间=FlowStartTime_t, 流量结束时间=FlowEndTime_t, 源IP=SrcIp_s, 目标IP=DestIp_s, 目标端口=DestPort_d, 流量方向=FlowDirection_s, 流量状态=FlowStatus_s, 包数量=Packets_d, 流量大小=Bytes_d | order by 流量开始时间 desc
提示:如果用的是Azure托管数据库服务,建议给数据库开启私有终结点(Private Endpoint),确保所有流量走内网传输,不会出现公网流量漏采的情况
5. 可选配置:可视化与告警
- 可以将上述查询语句固定到Azure仪表板,实时监控两者之间的流量峰值、请求量变化
- 也可以基于查询结果配置告警规则,出现流量突增、流量被拦截等异常场景时自动触发通知
内容的提问来源于stack exchange,提问作者Calej
相关产品推荐
相关产品推荐

