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

如何用Grok从URI路径过滤9位用户ID及可选URIPARAM?

调整Grok模式提取HTTP日志中的9位用户ID并保留完整URI及可选参数

需求说明

从HTTP访问日志的URI中提取9位用户ID,同时保留完整URI及可选的URIPARAM参数。

日志示例

"123.123.123.234" "yRETHGsggbbkndgddggddgRR" "03/Aug/2022:13:59:58 +0200" "34" "GET /api/v1/users/323408611/action/check-status HTTP/1.1" 200 26 "Apache-HttpClient/4.5.9 (Java)"

现有Grok模式

"%{IP:ip}" "%{DATA:rdmgen}" "%{HTTPDATE:timestamp}" "%{NUMBER:time}" "%{WORD:urimthd} %{PATH:path}(?:%{URIPARAM:param})? %{WORD:proto}/%{NUMBER:proto_ver}" %{NUMBER:status} %{NUMBER:total} "%{GREEDYDATA:agent}"

调整后的Grok模式

针对日志中/users/后紧跟9位用户ID的结构,修改路径匹配逻辑,同时保留完整URI和可选参数:

"%{IP:ip}" "%{DATA:rdmgen}" "%{HTTPDATE:timestamp}" "%{NUMBER:time}" "%{WORD:urimthd} (?<full_uri>.*\/users\/%{NUMBER:user_id:9}\/.*)(?:%{URIPARAM:param})? %{WORD:proto}/%{NUMBER:proto_ver}" %{NUMBER:status} %{NUMBER:total} "%{GREEDYDATA:agent}"

调整说明

  • 替换原%{PATH:path}为自定义正则捕获组(?<full_uri>.*\/users\/%{NUMBER:user_id:9}\/.*):
    • full_uri字段保留完整的URI路径部分,满足保留完整URI的需求
    • %{NUMBER:user_id:9}精准捕获/users/后的9位数字作为用户ID,确保匹配长度符合要求
  • 保留原有的(?:%{URIPARAM:param})?可选匹配逻辑,兼容日志中URIPARAM存在或缺失的场景

如果你的URI前缀固定为/api/v1/users/,可以使用更精准的版本避免误匹配:

"%{IP:ip}" "%{DATA:rdmgen}" "%{HTTPDATE:timestamp}" "%{NUMBER:time}" "%{WORD:urimthd} (?<full_uri>/api/v1/users/%{NUMBER:user_id:9}/.*)(?:%{URIPARAM:param})? %{WORD:proto}/%{NUMBER:proto_ver}" %{NUMBER:status} %{NUMBER:total} "%{GREEDYDATA:agent}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 04:36:23