我想定义一个带有多个匹配器的 logstash 过滤器,因为在一个 .log 文件中有更多类型的记录消息。当我检查我是否有一个日志文件并且我定义了更多分离的过滤器时,我只定义了在该行上运行的第一个过滤器。
问问题
155 次
1 回答
2
您可以使用grok
具有多种模式的过滤器,也可以使用if
语句进行条件解析。
要使用多种模式,您只需将它们列在grok
:
grok {
match => [ "message",
"Error on line (?<line>\d+)",
"Exception in (?<place>\d+)",
"Something else"
]
}
Logstash 将按顺序评估它们并在其中一个匹配时停止(或给你一个_grokparsefailure
如果不匹配的标签)
您可以做的另一件事是条件评估:
if [message] =~ /Some pattern/ {
grok {
match => ['message','Some pattern of (?<number>\d+) stuff']
}
} else if [message] =~ /Some other pattern/ {
...
}
于 2014-09-18T13:23:57.060 回答