Фильтр Logstash для преобразования $epoch.$microsec в $epoch_millis

Я пытаюсь преобразовать поле метки времени в форме $epoch.$microsec в $epoch_millis.

Пример:

1415311569.541062  -->  1415311569541

Похоже, что в Logstash нет никаких средств для умножения чисел, поэтому ts * 1000 и приведение к длинному исключены.

Любые идеи?


person Jason Trost    schedule 06.11.2014    source источник


Ответы (2)


В вашем конкретном случае вам действительно может сойти с рук превращение проблемы в проблему манипулирования строками, но вы также можете использовать фильтр ruby:

filter {
  ruby {
    # do some calculation
    code => "event['ts'] = (1000 * event['ts'].to_f).round"
  }
}
person Magnus Bäck    schedule 07.11.2014

Вот что в итоге сработало.

mutate {
        convert => { 
            "ts" => "string"
        }

        gsub => [
            "ts", "\.", "",
            "ts", "\d{3}$", ""
        ]
}

```

person Jason Trost    schedule 07.11.2014