如果有人能帮我解决logstash frok,我将不胜感激。
我正在尝试为以下样本创建一个 grok 定义。我的目标是将主题解析为一个字段。
- t1='t1', t2='t2', subject='subj', t3='hoge'
- t1='t1', subject='subj', t3='hoge'
- 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
,所有比赛都将添加到赛事中。