Splunk查询:如何按客户取7天内max(total_time)日志计算准确平均耗时
实现方案
适用场景说明
针对7天时间范围内,每个客户仅保留total_time最高的1条日志、再计算平均耗时的需求,可按以下逻辑实现(以下示例基于Splunk SPL语法,和你原有使用的timechart命令适配)。
场景1:仅需提取每个客户的最大耗时用于平均计算(性能最优)
直接按客户维度聚合取最大耗时即可,假设你的客户唯一标识字段为customer_id,可替换为你实际使用的字段名:
<你的基础日志过滤条件> earliest=-7d latest=now | stats max(total_time) as customer_max_time by customer_id | stats avg(customer_max_time) as 7天全量客户平均最大摄入耗时
场景2:需要保留最大耗时对应日志行的全部字段
如果需要留存最大耗时日志的其他信息(如任务ID、执行时间等),可以用排序+去重的方式实现:
<你的基础日志过滤条件> earliest=-7d latest=now | sort 0 -total_time | dedup customer_id | stats avg(total_time) as 7天全量客户平均最大摄入耗时
逻辑说明:先将所有日志按total_time倒序排序,再通过
dedup对客户ID去重,自动保留每个客户排序后的第一条记录,也就是total_time最大的日志行。
扩展:按天统计每日平均耗时
如果你需要保留原有span=24h的按天统计维度,可使用如下语句:
<你的基础日志过滤条件> earliest=-7d latest=now | bin _time span=24h | stats max(total_time) as customer_max_time by _time,customer_id | timechart span=24h avg(customer_max_time) as 每日客户平均最大摄入耗时
内容的提问来源于stack exchange,提问作者Shambhavi Rai
相关产品推荐
相关产品推荐

