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
相关产品推荐
相关产品推荐

