即使使用 (?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 和我的配置中,它们都在新行停止匹配。
在您的配置中尝试使用:
- 多行过滤器(https://www.elastic.co/guide/en/logstash/current/plugins-filters-multiline.html)
- 多行编解码器(https://www.elastic.co/guide/en/logstash/current/plugins-
更新#1:
多行{
模式 => "^%{CISCOTAG}.*"
否定 => "true"
什么 => "previous"
periodic_flush => 错误
}
每当一行以与 %{CISCOTAG} 模式匹配的文本(例如 Apr,...)开始时,这将启动一个新的日志事件。所有其他行(例如以空格开头的行)将附加到上一个事件。
所以我从 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 和我的配置中,它们都在新行停止匹配。
在您的配置中尝试使用:
- 多行过滤器(https://www.elastic.co/guide/en/logstash/current/plugins-filters-multiline.html)
- 多行编解码器(https://www.elastic.co/guide/en/logstash/current/plugins-
更新#1:
多行{
模式 => "^%{CISCOTAG}.*"
否定 => "true"
什么 => "previous"
periodic_flush => 错误
}
每当一行以与 %{CISCOTAG} 模式匹配的文本(例如 Apr,...)开始时,这将启动一个新的日志事件。所有其他行(例如以空格开头的行)将附加到上一个事件。