Filebeat 没有将正确的多行日志发送到 logstash

Filebeat not sending correct multiline log to logstash

出于某种原因,filebeat 在 filebeat.yml 文件中使用多行过滤器时未发送正确的日志。我正在读取的日志文件有一些多行日志和一些单行日志。但是,它们都以日期开头,遵循相同的格式。例如,这里有几行:

2017-Aug-23 10:33:43: OutputFile: This is a sample message 
2017-Aug-23 10:34:23: MainClass: Starting connection:
   http.InputProcess: 0
   http.OutPutProcess: 1
2017-Aug-23 10:35:21: OutputFile: This is a sample message 2

我的 Filebeat yml 是:

- input_type: log
  paths:
  - /home/user/logfile.log
  document_type: chatapp
  multiline:
    pattern: "^%{YYYY-MMM-dd HH:mm:ss}"
    negate: true
    match: before

出于某种原因,当我看到 filebeat 日志命中 elasticsearch 时,所有日志都将聚合到一个日志行中,因此它似乎并没有真正按日期读取文件。有人可以帮忙吗?谢谢!

使用

pattern: "^%{YEAR}-%{MONTH}-%{MONTHDAY}"

给定 grok 模式,您当前使用的模式没有有效定义的正则表达式。

您可以使用 logstash 中预定义的 the grokconstructor. I constructed this pattern from the grok-patterns 测试多行模式。