Logstash 事件的日志存储下拉筛选器

Logstash 事件的日志存储下拉筛选器,logstash,Logstash,在我的日志文件中,我有如下条目: 2014-06-25 12:36:18,176 [10] ((null)) INFO [s=(null)] [u=(null)] Hello from Serilog, running as "David"! [Program] 2014-06-25 12:36:18,207 [10] ((null)) WARN [s=(null)] [u=(null)] =======MyOwnLogger====== Hello from log4net, runni

在我的日志文件中,我有如下条目:

2014-06-25 12:36:18,176 [10] ((null)) INFO  [s=(null)] [u=(null)] Hello from Serilog, running as "David"! [Program] 
2014-06-25 12:36:18,207 [10] ((null)) WARN  [s=(null)] [u=(null)] =======MyOwnLogger====== Hello from log4net, running as David! [MyOwnLogger] 
2014-06-25 12:36:18,209 [10] ((null)) ERROR [s=(null)] [u=(null)] =======MyOwnLogger====== Hello from log4net, running as David! [MyOwnLogger] 
分别为日志级别信息、警告和错误

我想做的是只输出到Elasticsearch那些错误级别的条目。这是我的日志存储配置文件:

input {
    file {
        path => "Somepath/*.log"
    }
}

# This filter doesn't work
filter {
  if [loglevel] != "error" { 
    drop { } 
  }
}

output {
    elasticsearch { host => localhost }
    stdout {}
}

实际上,目前没有任何内容发送到Elasticsearch。我知道它与过滤器有关,因为如果它不在那里,所有条目都会被发送到Elastisearch

试试这个grok过滤器。你的日志对我很有用

filter {
    grok {
            match => ["message","%{TIMESTAMP_ISO8601:logtime} \[%{NUMBER}\] \(\(%{WORD}\)\) %{WORD:loglevel} %{GREEDYDATA:other}"]
    }

    if [loglevel]!= "ERROR" {
            drop {}
    }
}

首先,您需要查询日志级别,然后您可以使用该字段执行if-else条件并决定是否删除

你解析记录的
grok
过滤器在哪里?@Alcanzar:作为一个新手,我一直在按照上面的说明进行操作。有一个滴滤器,我不尝试使用格罗克过滤器。我只是不知道如何正确地使用它。看看grok的文档,找出一个与您的条目相匹配的模式(这是一个可以帮助您进行测试的网站)。