You need to enable JavaScript to run this app. Splunk中rex命令替换URL参数后如何将相同URL合并计数
优惠活动
大模型
产品
解决方案
定价
更多

Splunk中rex命令替换URL参数后如何将相同URL合并计数

Splunk查询调整方案

问题根因

你当前的查询逻辑顺序有误:先对原始未替换可变参数的URL执行了分组统计,之后才做URL参数替换操作,因此替换后相同的URL早已被拆分为不同的统计行,无法自动合并计数。

修改思路

将所有URL规范化操作(转小写、可变参数替换)全部前置到统计步骤之前,先把同路径的API统一为相同的url值,再执行分组统计即可实现计数合并。

调整后完整查询

index=myaccount sourcetype=myaccountweb-master Response status=* url=*  
# 先完成URL全量规范化处理
| eval url=lower(url) 
| rex mode=sed field=url "s/account\/(\d+)\//account\/me\//" 
| rex mode=sed field=url "s/\d+account.\w+|\d+fm|\d+fs\d+/*/g" 
| rex mode=sed field=url "s/..:..:..:..:..:../*/" 
| rex mode=sed field=url "s/accounts\?ip=.*/accounts?ip=__/"
| rex mode=sed field=url "s/[^\/]{30,}/*/g" 
| rex mode=sed field=url "s/(\d|\.){8,}/*/g"
# 处理完统一格式的URL后再做分组统计
| chart count over url by status 
| addtotals 
| foreach * [ 
    eval <<FIELD>> = if('<<FIELD>>'==0,"-",'<<FIELD>>') 
    | eval p_<<MATCHSTR>> = if(isnull(tonumber('<<FIELD>>')),'<<FIELD>>',round(('<<FIELD>>'/Total)*100,2)) 
    | eval p_<<MATCHSTR>> = if('p_<<MATCHSTR>>'<1, "< 1",'p_<<MATCHSTR>>') 
    | eval <<FIELD>> = if("<<FIELD>>"=="Total",'<<FIELD>>', case('<<FIELD>>'=="-","-",tonumber('<<FIELD>>')>1,'<<FIELD>>'." (".p_<<MATCHSTR>>."%)",1=1,'<<FIELD>>')) 
] 
| fields - p_* 
| rex field="500" "\d+\s\((?<perc>.*)%\)" 
| sort - perc 
| where perc>10 
| head 5

内容的提问来源于stack exchange,提问作者augustine vijay

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 14:15:02