Logstash忽略(?)一个grok过滤器

时间:2018-02-18 16:30:02

标签: logstash logstash-grok filebeat

这是我的配置:

input{

        beats {
                port => 55556

        }


}

filter {
  if "iis" in [tags] {
    grok {
      match => { "message" => "%{TIMESTAMP_ISO8601:log_timestamp} %{WORD:S-SiteName} %{WORD:S-ComputerName} %{IPORHOST:S-IP} %{WORD:CS-Method} %{URIPATH:CS-URI-Stem} %{NOTSPACE:CS-URI-QUERY} %{NUMBER:S-Port}$ %{NUMBER:SC-Win32-Status} %{NUMBER:SC-Bytes} %{NUMBER:CS-Bytes} %{NUMBER:Time-Taken}"}
    }
  }
}

filter {
  if "nx" in [tags] {
    grok {
      match => { "message" => "\[%{TIMESTAMP_ISO8601:log_timestamp}\] (?<LogLevel>\[\w+\s*\]) (?<thread>\[\s*\d*\]) (?<snName>\[\w*\]) (?<snId>\[\d*\s*\d*\]) %{GREEDYDATA:message}"}
    }
  }
}



output{
        if "nx" in [tags] {

                elasticsearch {
                        hosts => ["localhost:9200"]
                        index => "nx-%{+YYYY.ww}"
                        user => "user"
                        password => "pass"
                }
        }

        if "iis" in [tags] {

                elasticsearch {
                        hosts => ["localhost:9200"]
                        index => "iis-%{+YYYY.ww}"
                        user => "user"
                        password => "pass"
                }
        }

}

这是一个日志样本:

[2018-02-18 15:19:04.668] [INFO ] [   155] [AliveReportCommand] [875076019 53033] - ProcessRequest Ended: elapsed time=00:00:00.0967851, _parser.Device.IsSuccess=False
[2018-02-18 15:25:32.716] [DEBUG] [   181] [] [] - Web Facade called: streamIDParam=-1

此日志对应于&#34; nx&#34;日志。 由于某种原因,它只是没有摄入。我使用上面的grok和那些代码运行了grok模拟,它的效果非常好。但是,它就像&#34; nx&#34;过滤器完全被忽略。即使我消除了&#34; IIS&#34;过滤器,仍然没有信息出现在Kibana上。 Logstash中也没有任何错误。我使用Filebeat进行相同的设置:

- type: log
  enabled: true
  paths: c:\logs\*\*.log
  exclude_files: ['mybeat.*']
  tags: ["nx"]
  multiline.pattern: '^\['
  multiline.negate: true
  multiline.match: after
- type: log
  enabled: true
  paths: C:\inetpub\logs\LogFiles\*\*.log
  tags: ["iis"]

2 个答案:

答案 0 :(得分:0)

我认为您必须只使用一个过滤器。在您的代码中,您使用了两个过滤器关键字。

{{1}}

答案 1 :(得分:0)

我感到很尴尬......

问题不在于过滤器的开头。 它是在Kibana上设置的时间戳。 选择正确的字段后,它立即出现。