#elasticsearch #logstash #kibana
#elasticsearch #logstash #kibana
Вопрос:
Итак, у меня в журнале есть два поля: timeLogged
, timeQueued
все эти поля имеют формат даты: 2014-06-14 19:41:21 0000
Мой вопрос в том, как преобразовать строковое значение даты в дату логарифма? как в @timestamp
Ответ №1:
С единственной целью преобразования в @timestamp существует специальный фильтр даты
date {
match => ["timeLogged","YYYY-MM-dd HH:mm:ss SSSS"]
}
Теперь в вашем случае можно использовать в основном два типа полей, поэтому вам придется немного покопаться, либо использовать фильтр grok для копирования значений в общее поле «log_date», либо попытаться выяснить, может ли фильтр даты принимать несколько аргументов, подобных одной из этих возможностей:
date {
match => ["timeLogged","YYYY-MM-dd HH:mm:ss SSSS",
"timeQueued","YYYY-MM-dd HH:mm:ss SSSS" ]
}
или
date {
match => ["timeLogged","YYYY-MM-dd HH:mm:ss SSSS"]
match => ["timeQueued","YYYY-MM-dd HH:mm:ss SSSS"]
}
Вам решать экспериментировать, я никогда не пробовал сам 😉
Ответ №2:
этого должно быть достаточно
date{
match => [ "timeLogged","ISO8601","YYYY-MM-dd HH:mm:ss" ]
target => "timeLogged"
locale => "en"
}
Ответ №3:
Вы можете попробовать этот фильтр
filter {
ruby {
code => "
event['timeLogged'] = Time.parse(event['timeLogged'])
event['timeQueued'] = Time.parse(event['timeQueued'])
"
}
}
Используйте мощную библиотеку ruby, чтобы делать то, что вам нужно!
Комментарии:
1. Привет, он выдает ошибку:
WARN: org.elasticsearch.index.mapper: [Chi Demon] [logstash-2014.06.29] Type [.fr (93.17.128.7)] contains a '.', it is recommended not to include it within a type name
2. Это ошибка logstash или ошибка elasticsearch? Предоставленные вами журналы работают на меня.
3. Вы можете сначала попробовать отключить фильтр и проверить, будет ли он также выдавать ошибку elasticsearch. В вашем сообщении об ошибке это не проблема с фильтром. Итак, возможно, это другая проблема, которая вызывает это. Можете ли вы предоставить полные журналы и свою конфигурацию?