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



如果有人能帮我解决logstash frok,我将不胜感激。

我正在尝试为以下样本创建一个 grok 定义。我的目标是将主题解析为一个字段。

  1. t1='t1', t2='t2', subject='subj', t3='hoge'
  2. t1='t1', subject='subj', t3='hoge'
  3. t1='t1', t3='hoge'

如果主题始终存在,则下面工作正常。

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

但是,我需要处理示例 No.3 ,因此,如果我更改 grok 定义如下,则示例 No1. 和 No2. 现在不起作用。

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

是否有任何好的 grok 定义可以适用于所有样本?

最好的选择可能是有条件地解析主题:

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

您仍然可以进行无条件grok,所有比赛都将添加到赛事中。

相关内容

  • 没有找到相关文章

最新更新