Наши серверы хранят файлы журналов в каталоге в соответствии с датой и временем в качестве имени файла. например:
/2015.08.21/01.23
/2015.08.21/01.24
/2015.08.21/01.25
где имена файлов следуют соглашению [часы].[минуты].
Как настроить Logstash для чтения из последнего файла (какова общая практика)?
- 1-я попытка:
Я указал путь к:
path => ["/2015.08.21/*"]
Logstash открыл много файлов, пока источник журнала (linux) не позволил ему открывать новые файлы.
- 2-я попытка:
Используйте rsync, чтобы скопировать все файлы и объединить их в один файл.
Однако у меня есть проблема с частичным файлом журнала, например, если текущий файл журнала 11.12, и он все еще записывается, у меня будут только частичные данные.
- 3-я попытка:
Периодически создавайте символическую ссылку, указывающую на последний файл. Я еще не пробовал, но я думаю, что это должно сработать, мне нужно понять, как создать простой планировщик в Linux.
- Обновлять
Я попробовал 3-ю попытку, но вижу некоторые недостатки этого метода.
- Если Logstash потратит на обработку файла более 1 минуты, он не сможет обработать весь файл, поскольку символическая ссылка указывает на следующий файл.
- Последние 1 или 2 события могут быть не обработаны.