Я использую файл в качестве входных данных для журналов в logstash. Мои файлы журналов меняются ежедневно, поэтому я хотел спросить, как мы можем настроить файловый плагин logstash, чтобы он работал с файлами, которые меняются ежедневно. И вдобавок к этому, ротация логов также доступна с файлом beat.
Ротация логов в logstash
Ответы (1)
Попытаюсь частично ответить на ваши вопросы.
Первое - ротация логов.
Из документов:
Обратите внимание, что повернутое имя файла будет рассматриваться как новый файл, поэтому, если start_position установлено в начало, повернутый файл будет повторно обработан.
https://www.elastic.co/guide/en/logstash/current/plugins-inputs-file.html
Это означает, что если у вас есть переименование в ротации файлов, вы, скорее всего, удвоите свой файл (если, как я полагаю, путь не исключает переименованный файл).
Если ваш путь исключает ваш переименованный файл, то все должно быть в порядке.
Я исправил это по-другому (в java и python соответственно).
Я отключаю переименование файлов и вместо этого называю файл журнала с префиксом даты. Итак, для меня в моем Java-приложении имя файла:
my-server-log-%h-%d.log
Поскольку я работаю в распределенной среде, я включаю имя хоста в имя файла журнала.
%h = имя хоста %d = дата
Это заканчивается тем, что мой файл называется:
my-server-log-pandaadb-2016-06-20.log
Этот файл никогда не переименовывается. Я изменил свой алгоритм вращения, чтобы просто не переименовывать, а вместо этого в полночь создать новый файл и оставить предыдущий файл нетронутым. Это приводит к тому, что logstash (правильно) знает, что он прочитал все строки в предыдущем файле. Он подбирает новый файл, так как я использую подстановочные знаки в своем вводе. Журналы не дублируются.
Кстати, это также неплохо работает в сочетании с rsync.
Надеюсь, это поможет,
Артур
Редактировать: я пока не работал с filebeat, поэтому не могу комментировать эту часть.