Logstash不会从apache日志更新@timestamp

Logstash不会从apache日志更新@timestamp,logstash,logstash-configuration,Logstash,Logstash Configuration,如果要将日志回填到logstash中,则应该尝试以某种方式提取正确的时间戳。否则,它们将被分配到logstash接收日志行的时间 这是使用date过滤器实现的,如: date { match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ] } 但不幸的是,这对我不起作用 因此,我有以下apache日志行: 10.80.161.251 - - [15/Oct/2015:09:13:45 +0000] "- -" "POST /xxx HTTP/1.

如果要将日志回填到logstash中,则应该尝试以某种方式提取正确的时间戳。否则,它们将被分配到logstash接收日志行的时间

这是使用
date
过滤器实现的,如:

date { match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ] }
但不幸的是,这对我不起作用

因此,我有以下apache日志行:

10.80.161.251 - - [15/Oct/2015:09:13:45 +0000] "- -" "POST /xxx HTTP/1.1" 200 696 29416 "-" "xxx" 4026
下面的模式是什么

ACCESS_LOG %{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:[@metadata][timestamp]}\] "(?:TLSv%{NUMBER:tlsversion}|-) (?:%{NOTSPACE:cypher}|-)" "(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})" %{NUMBER:response} (?:%{NUMBER:bytes_in}|-) (?:%{NUMBER:bytes_out}|-) %{QS:referrer} %{QS:agent} %{NUMBER:tts}
以及以下日志存储配置

# INPUTS
input {
    file {
        path => '/var/log/test.log'
        type => 'apache-access'
    }
}

# filter/mix/match
filter {
    if [type] == 'apache-access' {
        grok {
            patterns_dir => [ '/root/logstash-patterns' ]
            match => [ "message", "%{ACCESS_LOG}" ]
        }

        if !("_grokparsefailure" in [tags]) {
            mutate { add_field => ["timestamp_submitted", "%{@timestamp}"] }

            date {
                match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
            }
        }
    }
}

# now output
output {
    stdout { codec => rubydebug }
}

我在这里做错了什么。我试着添加时区、地区等等。但它仍然不起作用。非常感谢您的帮助(如果您正好在保加利亚的索非亚,请选择一杯饮料)。

自我提示:请仔细阅读

这里的问题与正确的字段不匹配

由于apache日志的默认模式,日志行中的时间戳位于
[@metadata][timestamp]
中,而不是
时间戳中

因此,日期匹配筛选器应为:

date {
    match => [ "[@metadata][timestamp]", "dd/MMM/yyyy:HH:mm:ss Z" ]
}