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

时间:2017-04-12 19:32:03

标签: logstash filebeat

由于某种原因,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

My 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

出于某种原因,当我看到文件节点日志命中弹性搜索时,所有日志都会被混合到一个日志行中,因此它似乎实际上并没有按日期读取文件。有人可以帮忙吗?谢谢!

1 个答案:

答案 0 :(得分:1)

使用

private static readonly object synchLock = new object();

private void OutputMessageToLogWindow(string message)
{
    Application.Current.Dispatcher.BeginInvoke(new Action(() =>
    {
        lock(synchLock)
        {
           outputRichTxtBox.AppendText(message);
           test.Text = message;
        }
    }));
}

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

您可以使用the grokconstructor测试多行模式。我从logstash中预定义的grok-patterns构建了这个模式。