【问题标题】:How to do this filter in logstash如何在logstash中进行此过滤
【发布时间】:2015-07-01 18:48:13
【问题描述】:

我有一个如下所示的 lof 文件

xxx yyy , abc
计数是:100
xxx yyy , abc

那么我怎样才能让 logstash 像“count = 100”一样选择和显示

使用 logstash 文档我无法弄清楚。 编辑:为简化起见,我只是缩小了上述问题的范围。

【问题讨论】:

  • 如果这是一个“事件”,那么您需要在处理之前使用多行过滤器或编解码器合并行。
  • @AlainCollins 我刚刚修改了问题,读取单行并收集数据。请看一下

标签: logging elasticsearch filter logstash


【解决方案1】:

要忽略不需要的行,请使用条件并删除{}:

if [message] !~ /count/ {
    drop{}
}

要从剩余的行中提取数字,请使用 grok{}:

else {
    grok {
        match => [ "message", "the count is %{NUMBER:myField:int}" ]
    }
}

注意:凭记忆写的;语法可能不是 100%。

【讨论】:

  • 非常感谢。你能解释一下解决方案的下降部分吗?就像如果我们有很多属性,比如“计数”要考虑,那么我们怎么能去掉它们。这是正则表达式吗?
  • drop{} 是一个过滤器,用于立即停止处理 logstash 中的事件。由于您的请求只是处理“计数”行,因此 drop{} 将阻止其他(未处理的)行进入 elasticsearch。
  • 好的。假设我必须处理“count”行和“someother”行,那么我可以在相同的条件下给它们两个,如果是,那么如何?
  • 你的 grok{} 过滤器可以有多种模式;默认情况下,它将使用第一个匹配的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多