Logstash 6.2.4 - время совпадения не соответствует текущей дате - PullRequest
0 голосов
/ 01 марта 2019

Я использую logstash 6.2.4 со следующей конфигурацией:

input {
  stdin { }
}


filter {
  date {
    match => [ "message","HH:mm:ss" ]
  }
}

output {
  stdout { }
}

Со следующим вводом:

10:15:20

Я получаю этот вывод:

{
       "message" => "10:15:20",
      "@version" => "1",
          "host" => "DESKTOP-65E12L2",
    "@timestamp" => 2019-01-01T09:15:20.000Z
}

У меня есть только информация о времени, но я хотел бы проанализировать ее как текущую дату.
Обратите внимание, что текущая дата - 1 марта 2019 года, поэтому я предполагаю, что 2019-01-01 является своего рода значением по умолчанию?

Как я могу разобрать информацию о времени и добавить к ней информацию о текущей дате?

Меня не очень интересуют какие-либо replace или другие блоки, так как согласно документации разбор времени должен по умолчанию соответствовать текущей дате.

1 Ответ

0 голосов
/ 03 марта 2019

Вам нужно добавить новое поле, объединяющее текущую дату с полем, содержащим информацию о вашем времени, которое в вашем примере является полем message, тогда ваш фильтр date необходимо будет проверить по этому новому полю,Вы можете сделать это, используя следующую конфигурацию.

filter {
    mutate {
       add_field => { "current_date" => "%{+YYYY-MM-dd} %{message}" }
    }
    date {
        match => ["current_date", "YYYY-MM-dd HH:mm:ss" ]
    }
}

Результат будет примерно таким:

{
    "current_date" => "2019-03-03 10:15:20",
      "@timestamp" => 2019-03-03T13:15:20.000Z,
            "host" => "elk",
         "message" => "10:15:20",
        "@version" => "1"
}
...