【问题标题】:Filebeat not sending correct multiline log to logstashFilebeat 未将正确的多行日志发送到 logstash
【发布时间】:2017-04-13 03:49:30
【问题描述】:

由于某种原因,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 时,所有日志都将汇总到一个日志行中,因此它似乎实际上并不是按日期读取文件。任何人都可以帮忙吗?谢谢!

【问题讨论】:

    标签: logstash filebeat


    【解决方案1】:

    使用

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

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

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

    【讨论】:

    • 这是正确的格式。我的logstash过滤器格式也关闭了。我使用 grok 构造函数找出正确的过滤器
    • 我能够让模式在 grok 构造函数上工作,但它仍然无法在 filebeat 中工作。看起来 filebeat 仍然无法识别日志的开始(如您所说的日期)。你知道为什么吗?
    • 不确定,请尝试将正则表达式更改为不那么具体,看看是否会有所不同。此时可能需要反复试验
    猜你喜欢
    • 2020-10-09
    • 2019-11-30
    • 1970-01-01
    • 1970-01-01
    • 2019-08-25
    • 2021-03-18
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    相关资源
    最近更新 更多