false -6ren">
gpt4 book ai didi

logstash - 如果多个 grok 匹配之一,则防止 _grokparsefailure

转载 作者:行者123 更新时间:2023-12-02 03:24:37 24 4
gpt4 key购买 nike

我有这个 grok:

grok {
patterns_dir => "/etc/logstash/patterns/"
break_on_match => false
keep_empty_captures => true

match => [
"message", "(%{EXIM_DATE:exim_date} )(%{EXIM_PID:exim_pid} )(%{EXIM_MSGID:exim_msg_id} )(%{EXIM_FLAGS:exim_flags} )(%{GREEDYDATA})",
"message", "(%{EXIM_MSGID} )(<= )(%{NOTSPACE:env_sender} )(%{EXIM_REMOTE_HOST} )?(%{EXIM_INTERFACE} )?(%{EXIM_PROTOCOL} )?(X=%{NOTSPACE:tls_info} )?(%{EXIM_MSG_SIZE} )?(%{EXIM_HEADER_ID} )?(%{EXIM_SUBJECT})",
"message", "(%{EXIM_MSGID} )([=-]> )(%{NOTSPACE:env_rcpt} )(<%{NOTSPACE:env_rcpt_outer}> )?(R=%{NOTSPACE:exim_router} )(T=%{NOTSPACE:exim_transport} )(%{EXIM_REMOTE_HOST} )(X=%{NOTSPACE:tls_info} )?(QT=%{EXIM_QT:exim_qt})",
"message", "(%{EXIM_DATE:exim_date} )(%{EXIM_PID:exim_pid} )(%{EXIM_MSGID:exim_msg_id} )(Completed )(QT=%{EXIM_QT:exim_qt})",
"message", "(%{EXIM_DATE:exim_date} )(%{EXIM_PID:exim_pid} )(%{EXIM_MSGID:exim_msg_id} )?(%{EXIM_REMOTE_HOST} )?(%EXIM_INTERFACE} )?(F=<%{NOTSPACE:env_sender}> )?(.+(rejected after DATA|rejected \(but fed to sa-learn\)|rejected [A-Z]+ (or [A-Z]+ %{NOTSPACE}?|<%{NOTSPACE:env_rcpt}>)?): (?<exim_rej_reason>.+))"
]
}

如果我单独测试 grok 模式,一切都会按预期工作,但在具有多个匹配项的生产中它们不会。结果没问题,我解析了所有内容,但每次都有 _grokparsefailure 标记,如果 5 个中的一个匹配的话。我该如何防止这种情况?

删除标签不是我想要的,因为如果没有匹配项,则应添加标签,以便我可以删除消息。

最佳答案

失败的原因是您设置了 break_on_match,它会测试 match 中的每个条目。这会导致您的模式之一不匹配并设置 _grokparsefailure 标记。

从外观上看,您的模式都是互斥的,因此您无需设置 break_on_match 并仍然保留功能。

关于logstash - 如果多个 grok 匹配之一,则防止 _grokparsefailure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31118075/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com