使用Container Insights查询时,按Computer分组后Bin出现数据缺口问题
问题分析与解决办法
你的查询语句没有语法错误,图表出现缺口是数据聚合逻辑导致的,不是代码问题:
- 未按
Computer分组时,bin(TimeGenerated, 10m)会把所有日志按10分钟区间合并统计,只要区间内有日志就会生成计数,所以图表显示连续。 - 按
Computer分组后,若某个10分钟区间里,某台机器没有产生任何日志,这个「时间区间+机器」的组合就不会出现在结果里,图表对应位置自然就出现了缺口。
如果想要让图表保持连续,缺失计数的位置显示为0,可以用make-series语法强制生成所有时间区间,缺失值填充默认值:
ContainerLogV2 | make-series count=count() default=0 on TimeGenerated in range(bin(ago(24h),10m), bin(now(),10m),10m) by Computer | mv-expand TimeGenerated, count | project TimeGenerated, Computer, count
或者用笛卡尔积+左连接的方式补全缺失的组合:
// 获取所有需要的10分钟时间区间 let time_bins = ContainerLogV2 | summarize by bin(TimeGenerated,10m); // 获取所有唯一的机器列表 let computers = ContainerLogV2 | summarize by Computer; // 生成时间区间和机器的全量组合 let all_combinations = time_bins | join kind=cross computers on $left.empty = $right.empty; // 左连接原始统计结果,补全缺失的计数为0 ContainerLogV2 | summarize log_count=count() by bin(TimeGenerated,10m), Computer | right join all_combinations on bin(TimeGenerated,10m) = TimeGenerated, Computer | project TimeGenerated, Computer, log_count = coalesce(log_count, 0) | sort by TimeGenerated, Computer
内容的提问来源于stack exchange,提问作者prumand
相关产品推荐
相关产品推荐

