logstash 如何匹配在grok中出现0或1次的数据?

rt4zxlrg  于 2023-11-15  发布在  Logstash
关注(0)|答案(1)|浏览(186)

我很感激如果有人能帮助我与logstash frok。
我试图为下面的示例创建一个单独的grok定义。我的目标是将 subject 解析为字段。

  1. t1='t1',t2='t2',subject='subj',t3='hoge'
  2. t1='t1',subject='subj',t3='hoge'
  3. t1='t1',t3='hoge'
    如果 subject 始终存在,则下面的工作正常。
t1=%{QS}, (%{NOTSPACE:key}=%{NOTSPACE:value}, )*subject=%{QS:subject}

字符串
但是,我需要处理3号样本,所以如果我按照下面的方式更改grok定义,那么1号和2号样本现在就不能工作了。

t1=%{QS}, (%{NOTSPACE:key}=%{NOTSPACE:value}, )*(subject=%{QS:subject})?


有没有什么好的grok定义可以适用于所有样本?

mlnl4t2r

mlnl4t2r1#

你最好的办法可能是有条件地解析出主题:

if [message] =~ /subject/ {
  grok {
    match => { "message" => "subject=%{QS:subject}" }
  }
}

字符串
你仍然可以做你的无条件grok以及和所有匹配将被添加到事件.

相关问题