【问题标题】:Filter a field from uri path - Grok从 uri 路径中过滤字段 - Grok
【发布时间】:2022-08-16 18:29:20
【问题描述】:

试图从 URI 中过滤掉一个参数。

样本:

\"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)\"

图案:

\"%{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}\"

123456789 - 是用户 ID

URIPARAM 是可选的,有时参数会添加,有时参数不会添加到日志中。 我试图在 URI 中过滤这 9 位数字,但是。有没有办法过滤数字以及 uri 和可选的 uri 参数?

谢谢

    标签: regex logstash-grok grok


    【解决方案1】:
    "%{IP:ip}" "%{DATA:rdmgen}" "%{HTTPDATE:timestamp}" "%{NUMBER:time}" "%{WORD:urimthd} %{PATH:path}\/users\/%{NUMBER:userid}%{PATH:path} %{WORD:proto}/%{NUMBER:proto_ver}" %{NUMBER:status} %{NUMBER:total} "%{GREEDYDATA:agent}"
    

    像这样尝试,但如果日志中没有“/users/”模式,它将失败,使用 ifs 或 smth 寻找解决方案

    (?:"(\/users\/)?:%{NUMBER:userid}|%{PATH:path}"|%{PATH:path})
    

    【讨论】:

      猜你喜欢
      • 2020-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-09
      • 2021-08-26
      • 1970-01-01
      • 2018-07-05
      • 1970-01-01
      相关资源
      最近更新 更多