如果有人能帮我解决 Logstash frok 问题,我将不胜感激。
我正在尝试为以下示例创建单个 grok 定义。我的目标是将 subject 解析为一个字段。
如果 subject 始终存在,则以下效果很好。
t1=%{QS}, (%{NOTSPACE:key}=%{NOTSPACE:value}, )*subject=%{QS:subject}
但是,我需要处理 3 号样本,因此如果我按如下方式更改 grok 定义,则处理 1 号样本。和No2。现在不工作。
t1=%{QS}, (%{NOTSPACE:key}=%{NOTSPACE:value}, )*(subject=%{QS:subject})?
有什么好的 grok 定义可以适用于所有样本吗?
你最好的选择可能是有条件地解析主题:
if [message] =~ /subject/ {
grok {
match => { "message" => "subject=%{QS:subject}" }
}
}
您仍然可以无条件执行
grok
,所有比赛都将添加到活动中。