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

如何在Splunk中移除URL指定参数并对URL进行分组?

在Splunk中清理URL参数并分组的实现方案

针对你的URL /app/account-headless#state=FD=reqdoc&PN=952949&accessMode=Internet&accessType=MOBILE,要移除指定参数(如PN、accessType)后进行分组,可通过以下两种方式实现:

方法一:直接用正则替换清理参数

这种方式适合快速移除已知参数,步骤简洁:

  1. 提取URL锚点中的state参数内容
    先从原始URL中分离出#state=后面的所有参数字符串:

    rex field=_raw "(?<url_prefix>[^#]+)\#state=(?<state_params>.*)"
    

    执行后会生成两个字段:

    • url_prefix:URL中#之前的部分(即/app/account-headless)
    • state_params:state参数的完整值(即FD=reqdoc&PN=952949&accessMode=Internet&accessType=MOBILE)
  2. 移除指定参数
    用正则替换掉PN和accessType相关的键值对,覆盖参数在开头、中间、结尾的所有情况:

    rex field=state_params "(^|&)PN=[^&]*" ""
    rex field=state_params "(^|&)accessType=[^&]*" ""
    

    额外处理可能残留的首尾&符号:

    rex field=state_params "^&|&$" ""
    
  3. 拼接清理后的完整URL并分组
    将前缀和清理后的state参数重新拼接,再按清理后的URL分组统计:

    eval cleaned_url = url_prefix . "#state=" . state_params
    stats count by cleaned_url
    

方法二:拆分参数后过滤(更灵活)

如果需要动态过滤参数或处理更复杂的参数结构,可先拆分参数再过滤:

  1. 提取并拆分state参数
    先提取前缀和state参数,再将参数拆分为多值字段:

    rex field=_raw "(?<url_prefix>[^#]+)\#state=(?<state_params>.*)"
    spath input=state_params delim="&" output=param_list
    

    param_list会变成多值字段,每个元素是单个键值对(如FD=reqdoc、PN=952949)

  2. 过滤不需要的参数
    使用mvfilter匹配并排除指定参数:

    eval filtered_params = mvfilter(not match(param_list, "^PN=") AND not match(param_list, "^accessType="))
    
  3. 拼接参数并生成清理后的URL
    将过滤后的参数重新拼接为字符串,再生成完整URL并分组:

    eval cleaned_state = mvjoin(filtered_params, "&")
    rex field=cleaned_state "^&|&$" ""  // 处理空参数或首尾&
    eval cleaned_url = url_prefix . "#state=" . cleaned_state
    stats count by cleaned_url
    

注意事项

  • 如果原始日志中的URL字段不是_raw,请将field=_raw替换为实际的URL字段名(如field=url)
  • 若需要移除更多参数,只需在正则或mvfilter中添加对应的匹配规则即可

内容的提问来源于stack exchange,提问作者donet prof

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 03:25:46