即使使用 (?m),Logstash 也不会占用我的多行

Logstash won't take my multiline even with (?m)

所以我从 Cisco 路由器收到了这条日志消息:

Apr 15 10:51:26.824: %CRYPTO-4-PKT_REPLAY_ERR: decrypt: replay check failed
    connection id=777, sequence number=218932

Apr 15 11:00:03.261: %CRYPTO-4-PKT_REPLAY_ERR: decrypt: replay check failed
    connection id=777, sequence number=231456

Apr 15 11:05:00.525: %CRYPTO-4-PKT_REPLAY_ERR: decrypt: replay check failed
    connection id=789, sequence number=6509

Grok 解析该位直到 \r\n 就好了,但在它创建新条目后解析失败。我在正则表达式前面有 (?m) 并且在我更新到 logstash 1.5.5 之前它曾经工作过。

我发现真正奇怪的是,使用 http://grokconstructor.appspot.com 我无法让它匹配整个内容,即使开头是 (?m) 或结尾是 (?<message>(.|\r|\n)*) 也是如此。在 rubular.com,两者都工作得很好,但在 grokconstructor 和我的配置中,它们都在新行停止匹配。

在您的配置中尝试使用:

每当一行以与 %{CISCOTAG} 模式匹配的文本(例如 Apr,...)开始时,这将启动一个新的日志事件。所有其他行(例如以空格开头的行)将附加到上一个事件。