logstash过滤器,未过滤的行

时间:2017-02-08 09:31:56

标签: logstash elastic-stack logstash-grok

我是Logstash过滤器的新手,并通过不同的博客和链接进行详细了解。我几个问题仍然没有答案。

。如果我的日志文件具有不同的日志模式,例如

  

2017-01-30 14:30:58 INFO ThreadName:33 - {“t”:1485786658088,“h”:“abcd1234”,“l”:“INFO”,“cN”:“org.logstash。 demo“,”mN“:”getNextvalue“,”m“:”获取下一个值“}     2017-01-30 14:30:58 INFO AnotherThread:33 -my日志模式不同

我有以下过滤器,它成功过滤了日志的第1行

 grok
 {  
      match => [ "message", "%{TIMESTAMP_ISO8601:LogDate} %{LOGLEVEL:loglevel} %{WORD:threadName}:%{NUMBER:ThreadID} - %{GREEDYDATA:Line}" ] 
  }
  json
  {
      source => "Line" 
  }
  1. 使用过滤模式无法过滤的行会发生什么?
  2. 有没有办法捕获所有未过滤的行并发送到elasticSearch?
  3. 有没有好的阅读材料,我可以阅读有关示例的输入,过滤器,输出插件?

2 个答案:

答案 0 :(得分:0)

回答你的问题:

  1. 使用grok无法过滤的行最终会出现在 grok_parsefailure。确保通过dropping行处理它 实际上并不符合过滤条件。

  2. 据我所知,您无法单独捕获它们并将其推送到ES。也许为此,您可以拥有多个 grok 模式,以便您可以将其过滤掉,然后将其发送到不同的ES索引。

  3. 我在上面的评论中添加了链接。

  4. SO可以派上用场。希望它有所帮助!

答案 1 :(得分:0)

正如@darth_vader所指出的,你会在每个文档上得到一个“grok_parsefailure”标签,它与grok {}过滤器中的模式不匹配。但是,您如何处理此故障取决于您。

默认情况下,所有事件都会传递到您的输出{}部分,这可能会将它们发送到elasticsearch。您还可以使用条件输出{}部分,它将已解析的日志发送到一个输出,将未解析的日志发送到另一个(文件{}输出或不同的索引,或......)。

至于例子,官方文档往往包含不完整的片段(最多),所以你可能会在随机互联网博客中找到更好的例子。