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

如何通过KQL查询Private Endpoint出入站字节及0值记录

问题原因

你当前使用的Resources表仅存储Azure资源的静态配置元数据,不包含Bytes In、Bytes Out这类运行时流量指标,无论怎么展开资源属性都无法获取流量数值。
私有端点的入站、出站流量属于平台监控指标,存储在Azure Monitor的AzureMetrics时序表中,需要通过资源ID关联静态资源信息和监控指标才能拿到对应数据。

可用查询代码

以下查询可直接运行,默认统计最近7天的流量数据,筛选出入站/出站字节为0或无流量上报的私有端点:

// 拉取所有已成功部署的私有端点基础配置
let privateEndpointList = Resources
| where type =~ 'Microsoft.Network/privateEndpoints'
| where tostring(properties.provisioningState) == 'Succeeded'
| project 
    PEId = id,
    PEName = name,
    PEResourceGroup = resourceGroup,
    PELocation = location,
    PESubnetId = tostring(properties.subnet.id),
    PENicId = tostring(properties.networkInterfaces[0].id);
// 关联流量指标并筛选
AzureMetrics
| where TimeGenerated > ago(7d) // 可自行调整查询时间范围
| where ResourceId in (privateEndpointList | project PEId)
| where MetricName in ('BytesIn', 'BytesOut')
| summarize TotalTraffic = sum(Total) by ResourceId, MetricName
| evaluate pivot(MetricName, sum(TotalTraffic))
| join kind=leftouter privateEndpointList on $left.ResourceId == $right.PEId
| extend 
    BytesIn = coalesce(BytesIn, 0), // 无指标上报时默认按0处理
    BytesOut = coalesce(BytesOut, 0)
| where BytesIn == 0 or BytesOut == 0
| project PEName, PEResourceGroup, PELocation, PESubnetId, PENicId, BytesIn, BytesOut, ResourceId
注意事项
  • 原查询存在冗余逻辑:properties.provisioningState是字符串类型字段,不需要用mvexpand展开;重复对properties.networkInterfaces执行mvexpand会产生大量无意义重复行,直接通过索引取数组内字段值即可。
  • 若查询结果为空,先确认对应订阅的私有端点已经开启诊断设置,将平台指标推送到你当前查询的Log Analytics工作区,未开启诊断设置的情况下AzureMetrics表不会收录对应资源的监控数据。
  • 如果你需要查看分钟级粒度的流量为0的时段,删除上述查询中的summarize聚合步骤,直接基于原始时序记录筛选即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:06:20