Logstash 在同一文件中处理不同的日志格式

Logstash 在同一文件中处理不同的日志格式,logstash,logstash-grok,Logstash,Logstash Grok,我有一个包含不同输出格式的日志文件 例如: line 1 = 2015-01-1 12:04:56 INFO 192.168.0.1 my_user someone logged in line 2 = 2015-01-1 12:04:56 WARN [webserver-thread] (MyClass.java:66) user authenticated 虽然真正的解决方案是将它们拆分成单独的文件或统一格式,但是否可以使用Logstash搜索不同的日志格式?我的第一个建议是运行一个gro

我有一个包含不同输出格式的日志文件

例如:

line 1 = 2015-01-1 12:04:56 INFO 192.168.0.1 my_user someone logged in
line 2 = 2015-01-1 12:04:56 WARN [webserver-thread] (MyClass.java:66) user authenticated

虽然真正的解决方案是将它们拆分成单独的文件或统一格式,但是否可以使用Logstash搜索不同的日志格式?

我的第一个建议是运行一个grok{}来去除常见内容-日期时间和日志级别。您可以将剩余内容放回[message]字段:

%{TIMESTAMP_ISO8601} %{WORD:level} %{GREEDYDATA:message}
确保在grok{}中使用“overwrite”参数

然后,如果您想解析剩余的信息,您的(多个)regexp将针对一个较短的字符串运行,这将使它们更高效

然后可以有多个模式:

grok {
    match => [
        "message", "PATTERN1",
        "message", "PATTERN2"
    ]
}
默认情况下,grok在命中第一个匹配项时将停止处理