elasticsearch 使用filebeat在日期/时间之间合并日志,elasticsearch,logstash,logstash-grok,filebeat,elasticsearch,Logstash,Logstash Grok,Filebeat" /> elasticsearch 使用filebeat在日期/时间之间合并日志,elasticsearch,logstash,logstash-grok,filebeat,elasticsearch,Logstash,Logstash Grok,Filebeat" />

elasticsearch 使用filebeat在日期/时间之间合并日志

elasticsearch 使用filebeat在日期/时间之间合并日志,elasticsearch,logstash,logstash-grok,filebeat,elasticsearch,Logstash,Logstash Grok,Filebeat,我正在尝试使用fileBeat(无日志存储)将日志推送到elasticSearch 我想在一条消息中发送以下日志,但它被分成多条消息,每一行都成为单独的消息 20161014 17:49:09.169 [ERROR] [Thread-2974] some.java.class.:70 - some.java.Exception: write failed. History: [requestHost=123-some.org.com, time=Fri Oct 14 17:49:05 GMT-0

我正在尝试使用
fileBeat
(无日志存储)将日志推送到
elasticSearch

我想在一条消息中发送以下日志,但它被分成多条消息,每一行都成为单独的消息

20161014 17:49:09.169 [ERROR] [Thread-2974] some.java.class.:70 - some.java.Exception: write failed. History: [requestHost=123-some.org.com, time=Fri Oct 14 17:49:05 GMT-07:00 2016, exception=java.net.SocketTimeoutException]
[requestHost=123-some.org.com, time=Fri Oct 14 17:49:07 GMT-07:00 2016, exception=java.net.SocketTimeoutException]
[requestHost=123-some.org.com, time=Fri Oct 14 17:49:09 GMT-07:00 2016, exception=java.net.SocketTimeoutException]
 Tried 3 times
        at java.lang.Thread.run(Thread.java:745)
20161014 17:49:09.169 [ERROR] [Thread-3022]
我想合并两个日期之间的所有行(第一行和最后一行)

这是我的
filebeat.yml
代码片段

 paths:
      - /test.log
      multiline.pattern: '^\[0-9]{8}'
      multiline.negate: true
      multiline.match: after
我需要知道正确的
regex


我试图在不使用logstash的情况下解决这个问题,在提供的日志示例中使用以下Filebeat配置会生成两个事件,其中每个消息都以日期开始

我使用下面的配置运行了
/filebeat-cfilebeat.yml-e-v-d“*”
,以进行测试。我还测试了计算机上的模式

filebeat.yml:

filebeat:
  prospectors:
    - paths: ["input.txt"]
      multiline:
        pattern: '^[0-9]{8}'
        negate:  true
        match:   after
output:
  console:
    pretty: false
输出:

{   
  "@timestamp": "2016-10-17T14:13:31.292Z",
  "beat": {
    "hostname": "host.example.com",
    "name": "host.example.com",
  },  
  "input_type": "log",
  "message": "20161014 17:49:09.169 [ERROR] [Thread-2974] some.java.class.:70 - some.java.Exception: write failed. History: [requestHost=123-some.org.com, time=Fri Oct 14 17:49:05 GMT-07:00 2016, exception=java.net.SocketTimeoutException]\n[requestHost=123-some.org.com, time=Fri Oct 14 17:49:07 GMT-07:00 2016, exception=java.net.SocketTimeoutException]\n[requestHost=123-some.org.com, time=Fri Oct 14 17:49:09 GMT-07:00 2016, exception=java.net.SocketTimeoutException]\n Tried 3 times\n        at java.lang.Thread.run(Thread.java:745)",
  "offset": 519,
  "source": "input.txt",
  "type": "log"
}   
{   
  "@timestamp": "2016-10-17T14:17:21.686Z",
  "beat": {
    "hostname": "host.example.com",
    "name": "host.example.com",
  },  
  "input_type": "log",
  "message": "20161014 17:49:09.169 [ERROR] [Thread-3022]",
  "offset": 563,
  "source": "input.txt",
  "type": "log"
} 

通过跳出开放括号,您正在移除它的幂函数,并在文本括号上进行匹配。我在go Playerd上尝试了一些正则表达式(来自filebeat文档),它们都是有效的,但实际上它们都给了我同样的问题,我不是一个regex忍者,但看起来我需要花一些时间来解决这个问题,或者只是使用带有GROK过滤器的logstash。这个问题中提供的虚线配置对我有用。Filebeat版本-6.8.14我看不到“\n”并且消息仍然被分割成碎片,这些是log4j日志您认为这有什么区别吗?您运行的是哪个版本的Filebeat?什么操作系统?我在OSX上的5.0-rc1上试过这个,效果很好。我不认为它们是log4j日志这一事实有什么区别。我在ubuntu 14.04.03上使用的是
filebeat版本1.3.1(amd64)
。如果我能找到/编写一个正则表达式,它从
^[0-9]{8}
开始,在下一次出现相同的
^[0-9]{8}
时结束,你认为这可以解决我的问题吗?我测试了我在1.3.1上提供的配置,它与您提供的日志示例一起工作。顺便说一句,您在问题中发布的配置对1.3.1无效,因为缩进错误,并且您不能使用像
multiline.pattern
这样的虚线键。请尝试我的答案中给出的确切配置和命令。如果它们不起作用,那么您可以提供一个更大的日志示例,其中包含如何将行分组到事件中的示例。非常感谢您坚持不懈地尝试解决我的问题,在去掉虚线键后,一切都会就绪