gpt4 book ai didi

logstash - 多个Grok过滤器未存储第一个过滤器匹配记录

转载 作者:行者123 更新时间:2023-12-03 15:38:42 26 4
gpt4 key购买 nike

我正在使用Logstash解析后缀日志。我主要致力于从后缀日志中获取退回的电子邮件日志,并将其存储在数据库中。

为了获取日志,首先我需要找到由postfix生成的与我的message-id对应的ID,然后使用该ID,我需要查找电子邮件的状态。对于以下配置,我能够获取日志。

grok {
patterns_dir => "patterns"
match => [
"message", "%{SYSLOGBASE} %{POSTFIXCLEANUP}",
"message", "%{SYSLOGBASE} %{POSTFIXBOUNCE}"
]
named_captures_only => true
}

我正在使用以下if条件来存储与模式匹配的日志:
if "_grokparsefailure" not in [tags] {
#database call
}

如您所见,我正在使用两种模式从一个日志文件中找到相应的两个不同的日志。

现在,我想根据标签来区分这两种模式。因此,我对配置进行了如下修改:
  grok {
patterns_dir => "patterns"
match => [
"message", "%{SYSLOGBASE} %{POSTFIXBOUNCE}"
]
add_tag => ["BOUNCED"]
remove_tag => ["_grokparsefailure"]
named_captures_only => true
}

grok {
patterns_dir => "patterns"
match => [
"message", "%{SYSLOGBASE} %{POSTFIXCLEANUP}"
]
add_tag => ["INTIALIZATION"]
remove_tag => ["_grokparsefailure"]
named_captures_only => true
}

现在,它仅存储%{POSTFIXCLEANUP}模式日志。如果我颠倒顺序,它只会存储%{POSTFIXBOUNCE}模式。

因此,删除条件条件后,我发现从第一个过滤器解析的消息具有“_grokparsefailure”标签和第一个过滤器标签,因此它不存储该记录。

谁能告诉我需要做些什么来纠正这个问题?我有什么错误吗?

最佳答案

您需要保护第二个grok块-即,如果第一个成功,则不要执行它。

if ("BOUNCED" not in [tags]) {
grok {
patterns_dir => "patterns"
match => [
"message", "%{SYSLOGBASE} %{POSTFIXCLEANUP}"
]
add_tag => ["INTIALIZATION"]
remove_tag => ["_grokparsefailure"]
named_captures_only => true
}
}

关于logstash - 多个Grok过滤器未存储第一个过滤器匹配记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24705450/

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