Как я могу синхронизировать время журнала в logstash или kibana

У меня есть два журнала из разных источников, которые я загружаю в elasticsearch через logstash, а затем визуализирую с помощью kibana. Моя проблема в том, что время начала каждого журнала должно быть одинаковым, однако один из журналов неправильно записывает записи на 30 минут вперед.

Как мне исправить эту проблему со временем, есть ли фильтр logstash, который может вычесть 30 минут из времени, или я могу добавить какой-нибудь расширенный запрос в Kibana?

Я предпочитаю обновлять записи журнала в logstash.


person binarylegit    schedule 06.12.2016    source источник
comment
Откуда берутся даты? Анализируется из файла или просто из @timestamp, добавленного logstash. Вы используете один logstash или два? Если два, то они на одной машине?   -  person baudsp    schedule 07.12.2016
comment
@baudsp даты взяты из самих файлов журналов. Я просто запускаю один logstash в течение пары часов для каждого файла журнала, как пакетное задание, поэтому я не запускаю logstash постоянно.   -  person binarylegit    schedule 07.12.2016
comment
Я пытался найти способ изменить значение поля @timestamp с помощью рубинового фильтра, но безуспешно, поэтому я попытался выяснить, не связана ли проблема с вашей настройкой.   -  person baudsp    schedule 08.12.2016


Ответы (1)


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

Но вы можете манипулировать отметкой времени Logstash, если вам нужно.

Поле @timestamp для каждого события имеет много общего с классом Time в Ruby. В частности, он реализует те же самые операторы + и -, которые позволяют добавлять или вычитать некоторое количество секунд:

filter {
    ruby {
        code => "
                event['@timestamp'] = LogStash::Timestamp.new(event['@timestamp'] + (30 * 60))
        "
    }
}
person rutter    schedule 08.12.2016
comment
Не работает с Logstash 2.2: Ruby exception occurred: The field '@timestamp' must be a (LogStash::Timestamp, not a Time - person baudsp; 08.12.2016
comment
Упс. Что мне не нравится в фильтрах ruby, так это то, что они имеют тенденцию быть хрупкими между версиями Logstash. Я отредактировал фрагмент, чтобы он работал в версии 2.2. - person rutter; 08.12.2016
comment
Мы не знаем, какая версия используется в этом вопросе, поэтому ваш предыдущий ответ также может сработать. В любом случае, ваш ответ лучше моего, поэтому я его удалю. И я кое-что узнал, спасибо. - person baudsp; 09.12.2016