Фильтр даты Logstash не обновляет @timestamp с помощью временной метки Apache

Я пытаюсь заполнить некоторые прошлые данные журнала доступа Apache с помощью logstash, поэтому мне нужно, чтобы событие @timestamp было установлено на дату, указанную в сообщении журнала. Это моя текущая конфигурация logstash:

input {
    tcp {
        type => "access_log"
        port => 9293
    }
}

filter {

    grok {
      match => { "message" => "%{COMBINEDAPACHELOG}" }
    }

    date {
      # Try to pull the timestamp from the 'timestamp' field (parsed above with
      # grok). The apache time format looks like: "18/Aug/2011:05:44:34 -0700"
      locale => "en"
      timezone => "America/New_York"
      match => { "timestamp" => "dd/MMM/yyyy:HH:mm:ss Z" }
      add_tag => [ "tsmatch" ]
    }

}

output {
  stdout { codec => rubydebug }
}

Однако фильтр даты, похоже, не обновляет событие @timestamp, даже несмотря на то, что временная метка Apache улавливается правильно и регулярное выражение должно соответствовать ей. Выходные данные выглядят так:

{
        "message" => "56.116.21.231 - - [20/Nov/2013:22:47:08 -0500] \"GET /xxxx/1.305/xxxx/xxxx.zip HTTP/1.1\" 200 33002333 \"-\" \"xxxxx/3.0.3 CFNetwork/609.1.4 Darwin/13.0.0\"",
     "@timestamp" => "2013-12-01T12:54:27.920Z",
       "@version" => "1",
           "type" => "access_log",
           "host" => "0:0:0:0:0:0:0:1%0:51045",
       "clientip" => "56.116.21.231",
          "ident" => "-",
           "auth" => "-",
      "timestamp" => "20/Nov/2013:22:47:08 -0500",
           "verb" => "GET",
        "request" => "/xxxx/1.305/xxxx/xxxx.zip",
    "httpversion" => "1.1",
       "response" => "200",
          "bytes" => "33002333",
       "referrer" => "\"-\"",
          "agent" => "\"xxxxx/3.0.3 CFNetwork/609.1.4 Darwin/13.0.0\"",
           "tags" => [
        [0] "tsmatch"
    ]
}

Есть идеи, что может быть не так?

Я использую logstash-1.2.2 flatjar.


person nuqqsa    schedule 01.12.2013    source источник


Ответы (1)


Хорошо, я обнаружил проблему, я использовал неправильный синтаксис в операции сопоставления:

match => ["отметка времени", "дд / МММ / гггг: ЧЧ: мм: сс Z"]

НЕТ

match => {"timestamp" => "дд / МММ / гггг: ЧЧ: мм: сс Z"}

person nuqqsa    schedule 01.12.2013