Дата разбора Logstash разная - PullRequest
       7

Дата разбора Logstash разная

0 голосов
/ 19 сентября 2018

Я пытаюсь создать фильтр для анализа даты из моих файлов журнала.Фильтр настроен так:

filter {
    date {
            match => [ "timestamp", "yyyy-MM-dd HH:mm:ss,SSS" ]
    }
}

Соответствующие сообщения журнала структурированы следующим образом:

[2018-09-18 10:13:17,623] [main] INFO  com.test.pack - Message
[2018-09-18 10:13:17,634] [main] INFO  com.test.pack - Message
[2018-09-18 10:13:17,641] [main] INFO  com.test.pack - Message

Вывод из Logstash:

{
      "host" => "hostname",
"@timestamp" => 2018-09-19T15:19:50.561Z,
   "message" => "[2018-09-18 10:13:17,623] [main] INFO com.test.pack - Message",
      "path" => "/path/to/file.log",
  "@version" => "1"
}
{
      "host" => "hostname",
"@timestamp" => 2018-09-19T15:19:50.561Z,
   "message" => "[2018-09-18 10:13:17,634] [main] INFO com.test.pack - Message",
      "path" => "/path/to/file.log",
  "@version" => "1"
}
{
      "host" => "hostname",
"@timestamp" => 2018-09-19T15:19:50.561Z,
   "message" => "[2018-09-18 10:13:17,641] [main] INFO com.test.pack - Message",
      "path" => "/path/to/file.log",
  "@version" => "1"
}

Таким образом, метка времени logstash изменяется как по дате, так и по времени.Сообщения журнала, датированные 17th , также отображаются как 19th .Есть идеи, что мне не хватает в моей фильтрации?

1 Ответ

0 голосов
/ 19 сентября 2018

Вам также понадобится фильтр Grok i для извлечения метки времени из сообщения.Пожалуйста, попробуйте что-то вроде этого.

filter {
    grok {
            match => {"message" => "[%{TIMESTAMP_ISO8601:timestamp}] [main] %{GREEDYDATA:restOfMessage}"}
  }
    date {
            match => [ "timestamp", "yyyy-MM-dd HH:mm:ss,SSS" ]
             timezone => "Etc/UCT"
    }
}

Пожалуйста, выберите часовой пояс, как доступно здесь https://www.joda.org/joda-time/timezones.html. Это может быть EST5EDT, EST, UTC или что-то еще.

...