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

问题描述 投票:0回答:1

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

我正在尝试为以下示例创建单个 grok 定义。我的目标是将 subject 解析为一个字段。

  1. t1='t1', t2='t2', subject='subj', t3='hoge'
  2. t1='t1',主题='主题',t3='hoge'
  3. t1='t1', t3='霍格'

如果 subject 始终存在,则以下效果很好。

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

但是,我需要处理 3 号样本,因此如果我按如下方式更改 grok 定义,则处理 1 号样本。和No2。现在不工作。

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

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

logstash logstash-grok
1个回答
1
投票

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

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

您仍然可以无条件执行

grok
,所有比赛都将添加到活动中。

© www.soinside.com 2019 - 2024. All rights reserved.