Multiline logstash" next"不分组

时间:2016-09-22 13:15:42

标签: elasticsearch logstash multiline

短: 我遇到多线问题。我得到了标签" multiline"在日志上,但它没有把它们放在一起。

说明: 我收到的日志

September 22nd 2016, 13:43:52.738   [0m[[31merror[0m] [0mTotal time: 368 s, completed 2016-09-22 13:43:52[0m
September 22nd 2016, 13:43:51.738   [0m[[0minfo[0m] [0m[36mSuites: completed 29, aborted 0[0m[0m
September 22nd 2016, 13:43:51.738   [0m[[31merror[0m] [0mFailed: Total 100, 
Failed 4, Errors 0, Passed 96[0m
September 22nd 2016, 13:43:51.737   [0m[[0minfo[0m] [0m[36mRun completed in 1 minute, 24 seconds.[0m[0m
September 22nd 2016, 13:43:51.737   [0m[[0minfo[0m] [0mScalaTest[0m

" 总时间:%{NUMBER} s "重复多次,我只对这些" 总计,失败,错误"之后的总时间感兴趣线。 在第一行和第二行之间可以是无数或几个日志。

我的配置是:

  grok {
#1
    match => {"message" => "\[.m\[\u001b\[3.m%{NOTSPACE:level}\u001b\[0m\] \u001b\[0m%{NOTSPACE:Status}: Total %{NUMBER}, Failed %{NUMBER}, Errors %{NUMBER}$
    add_tag => [ "test.continue" ]
    tag_on_failure => []
  }
#2
    if "test.continue" in [tags]{
    multiline {
      pattern => "%{TIMESTAMP_ISO8601}\u001b\[0m$"
      what => "next"
      negate => true
    }
  }
#3
  #OverallTime
  grok {
    match => {"message" => "\[.m\[\u001b\[3.m%{NOTSPACE:level}\u001b\[0m\] \u001b\[0mTotal time: %{NUMBER:Seconds:int} s, completed"}
    add_tag => [ "test.overalltime" ]
    tag_on_failure => []
  }

我得到的是:

beats_input_codec_plain_applied, test.continue, multiline   [0m[[31merror[0m] [0mFailed: Total 100, Failed 4, Errors 0, Passed 96[0m

第一个日志获取多行标记和test.continue但不像我期望的那样行事。

我理解的逻辑是:

  1. 如果您找到[0m[[31merror[0m] [0mFailed: Total 100, Failed 4, Errors 0, Passed 96[0m,请输入标签" test.continue",
  2. 使用标记" test.continue"多行化每个日志。并将其发送到您找到的下一行,直到找到末尾为%{TIMESTAMP_ISO8601}\u001b\[0m$
  3. 的日志
  4. 从该日志中提取时间
  5. 更多解释:

    我相信这种行为会发生,但不会发生。

    1找到触发器     [0m [[31merror [0m] [0mFailed:总计100,     失败4,错误0,传递96 [0m

    2一旦找到它,它将接受并在下一行的开头添加。由于日志的第一部分仍然匹配,它将再次添加标记,然后再次将其发送到多行     [0m [[31merror [0m] [0mFailed:总计100,     失败4,错误0,传递96 [0m [0m [[0minfo [0m] [0m [36mSuites:完成29,中止0 [0m [0m]

    3它将有第一个,第二个,......,直到找到带有时间戳的日志并打破多行。下一个日志不会随标签一起添加。

    [0m[[31merror[0m] [0mFailed: Total 100, Failed 4, Errors 0, Passed 96[0m [0m[[0minfo[0m] [0m[36mSuites: completed 29, aborted 0[0m[0m [0m[[31merror[0m] [0mTotal time: 368 s, completed 2016-09-22 13:43:52[0m
    

0 个答案:

没有答案