В настоящее время я использую logstash для импорта десятков файлов журналов из разных веб-приложений в Graylog. Он отлично работает, файлы помечены, поэтому я знаю, из какого веб-приложения они происходят.
Я не могу изменить веб-приложение, поэтому я не могу добавить приложение GELF в конфигурацию log4j веб-приложения. Идея состоит в том, чтобы периодически извлекать файлы журналов, анализировать их и импортировать с помощью logstash в Graylog.
Моя проблема заключается в том, как мне убедиться, что я не импортирую событие журнала, которое я уже импортировал. Например, у меня есть файл журнала с увеличивающимся шаблоном журнала: log.1, log.2 и т. д. Таким образом, у меня будут события журнала, которые могут быть в log.1 в первый раз и через 2 недели, когда я повторно импортирую они, возможно, будут в журнале.3. Боюсь, я не могу справиться с этим с вводом файла logstash «sincedb_path» и «start_position».
Итак, вот несколько вариантов, которые я собрал, и мне бы хотелось, чтобы вы рассказали о них, если кто-то столкнулся с той же проблемой:
- Используйте фильтр logstash, отбрасывающий все события до определенной даты, требующий хранения индекса каждой последней даты журнала каждого импортированного файла (потенциально 50+) и много записи конфигурации
- Использование правила drool в GrayLog для отклонения журналов с отметками времени до последнего журнала, полученного для данного типа.
- Попросите изменить шаблон журнала, чтобы он был чем-то вроде log.date вместо шаблона журнала, который переименовывает файлы (но я бы предпочел избежать этого)
- Любая другая идея?