Можно ли конвертировать дату с «2016-08-22T09: 09: 55.487Z» в UNIX time в Logstash? Я видел противоположную операцию, но ничего об этом.Преобразование даты в UNIX-время в Logstash
ответ
Во-первых, вам придется конвертировать "2016-08-22T09:09:55.487Z"
на объект даты, с указанием даты фильтра:
(предполагая, что поле date
содержит строку, представляющую действительную ISO8601 временную метку)
date {
match => ["date", "ISO8601"]
target => "date_object"
}
На данный момент у вас будет поле date_object
, содержащее метку времени старта. Эта метка времени может быть преобразована в ее эквивалент эпохи с помощью метода to_i
.
Для этого нам понадобится использовать рубиновый фильтр, который позволяет выполнять рубиновый код в качестве фильтра.
ruby {
code => "event['date_epoch'] = event['date_object'].to_i"
}
Тогда вы будете иметь поле date_epoch
, который будет число, представляющее время UNIX.
Сегодня я столкнулся с подобной проблемой. К сожалению, мир конфигурации выше, имеет ограничение, что теряет миллисекунды из временной метки во время целочисленного преобразования:
рубин {
код => «событие [„date_epoch“] = событие [„date_object“] .to_i»
}
Я попробовал несколько вариантов, включая преобразования объекта дата плавать, умножая его на 1000, а затем обратно в строку. Суть в том, что точность не совсем то же самое.
Наконец-то я придумал это немного hacky образец ниже. Он работал с logstash версии 2.4.1. Так первый я создаю поле tmpTimestamp
для того, чтобы преобразовать анализируемую метку времени в обычную строку:
mutate{
add_field => ["tmpTimestamp","%{@timestamp}"]
}
Мирный рубинового кода, чтобы бросить строку в стандартный формат рубин DateTime, преобразовать его в формат эпоха (в том числе мс), а затем обратно в строку:
ruby { code => "require 'date';event['epoch'] = DateTime.parse(event['tmpTimestamp']).strftime('%Q').to_s" }
Удалить неиспользуемую переменную TMP:
mutate{
remove_field => ["tmpTimestamp"]
}
Также см. Это для общего преобразования даты Ruby в эпоху: https://stackoverflow.com/a/14733261/2695332 Ввод даты не обязательно должен быть всей меткой времени. Это может быть только дата в форматах, таких как MM/DD/YYYY или MM-DD-YYYY и т. Д. – Vikas
- 1. Logstash Фильтр даты в специальном формате даты
- 2. Конфигурация фильтра даты в Logstash
- 3. Преобразование строки плавать в logstash
- 4. Logstash - Преобразование строки в Integer
- 5. Преобразование данных и Logstash
- 6. преобразование даты в формат даты
- 7. Преобразование даты в формате даты
- 8. Logstash добавить поле даты в журналы
- 9. Logstash фильтр даты в специальном случае
- 10. Фильтр даты в Logstash не работает
- 11. Logstash - Преобразование имен полей в нижний регистр
- 12. Logstash правильно не преобразование в JSON
- 13. Преобразование Прошедшее Timestamp в Float с Logstash
- 14. Неверный фильтр даты @stimestamp logstash
- 15. Преобразование даты в строку
- 16. Преобразование даты в Shell
- 17. Преобразование даты в
- 18. Преобразование даты в миллисекунды
- 19. Преобразование даты в секунды
- 20. Преобразование даты в JavaScript
- 21. Преобразование даты в TSQL
- 22. Преобразование даты в AWK
- 23. Преобразование даты в PHP
- 24. Преобразование даты в словах
- 25. Преобразование даты в SQL
- 26. Преобразование даты в C#
- 27. Преобразование даты в Java
- 28. Преобразование даты в R
- 29. Преобразование даты в страну
- 30. Преобразование даты в слово
Когда вы просите UNIX время, вы могли бы указать ехр выведенный выход? И вы ожидаете число или строку? – baudsp
@baudsp, я ожидаю такой номер: 1431607046 – Anatoly