2016-03-31 6 views
0

У меня есть logstash, получающий данные из таблицы MySQL. Данные содержат поле временной метки, которое сохраняется в часовом поясе базы данных MySQL, то есть UTC. Так что, если я сохраню «10:27:15» как время от моего приложения, строка в БД содержит «08: 27: 15Z», так как я нахожусь в Европе/Риме tz, которая смещена на 2 часа.
Когда я получаю его в logstash/es с плагином MySQL, запись снова «дезонирована», а мои данные содержат «06: 27: 15Z».
Я пытаюсь применить правильные TZ к моим данным, чтобы в ES я получил «08: 27: 15Z». Я пробовал Convert timestamp timezone in Logstash for output index name, то есть дублировал поле и повторно разбирал его снова, применяя TZ.
Проблема заключается в том, что я получаю «_dateparsefailure» разборе
"tztstamp" => "2016-03-31T06:17:47.000Z"
использованием
match => ["tztstamp", "ISO8601"]
То есть правильный формат. Я пробовал и другие форматы, созданные для этой цели безрезультатно.
Сервер работает с часовым поясом Европа/Рим. Поле «@timezone» автоматически заполняется правильным временем UTC (сейчас - 2 часа).
Любые идеи, как правильно изменить время в ES?
Чтобы добавить «визуальный» пример, это в БД
MySQL становится
Logstash , если я что-нибудьИзменение часового пояса в Logstash

ответ

0

не делать, как я понимаю, logstash работает на машине с «Европа/Рим» часовой пояс , В вашем примере поле tstamp (2016-03-31 08:17:47) не имеет информации о часах, поэтому logstash думает об этом в «Европе/Риме». Для того, чтобы Logstash знать о правильном TimeZone вы должны указать timezone вариант для date фильтра:

date { 
    match => [ "tstamp", "yyyy-MM-dd HH:mm:ss"] 
    timezone => "UTC" 
} 

Также вы получаете _dateparsefailure из-за tstamp не в ISO8601 формате.

+0

"2016-03-31T06: 17: 47.000Z" действительно ISO8601. Снимок экрана - от phpmyadmin. –

Смежные вопросы