Я установил Logstash для анализа файлов apache. Мне потребовалось довольно много времени, чтобы настроить правильные настройки, и я всегда пробовал использовать настоящие журналы. Я заметил (как сказано в документации), что logstash «запоминает», где он был в файле. Теперь мои настройки в порядке, и я бы хотел, чтобы Logstash «забыл». Это кажется сложнее, чем я. Я уже сделал следующее:
используемый:
start_position => "beginning"
удалил всю папку "data" из elastissearch (и сначала остановил его)
посмотрел, какие файлы были открыты с помощью logstash,
lsof -p PID
и удалил все, что было многообещающим (в моем случае/tmp/jffi*.tmp
)
Тем не менее Logstash не забывает и разбирает только "свежие" файлы в папке, где лежат логи.
Любые идеи?
/opt/logstash/data/plugins/inputs/file
Ответы:
По умолчанию logstash записывает последнюю позицию в файл журнала, который обычно находится в нем
$HOME/.sincedb
. Logstash можно обмануть, полагая, что он никогда не анализировал файл журнала, указав/dev/null
какsincedb_path
.Здесь находится часть документации Input File .
Пример конфигурации
источник
sincedb_path => "NUL"
чтобы получить тот же эффект. Подробности здесьingnore_older => 0
чтобы logstash принимал их независимо от даты. По умолчанию, если файлы старше, то 24 часа игнорируются.ignore_older => 0
работы в logstash! Меня забила та же проблема, что и спрашивающий. Вроде находка неочевидная! (поиск в Google "ignore_older" и "logstash" вызывает страницы только при filebeat, я не смог найти никаких следов того, как с этим справиться в logstash)ignore_older
укажете опцию в своей конфигурации filebeat, filbeat будет вынужден снова прочитать весь файл elastic.co/guide/en/beats/filebeat/current/…Плагин файл история магазина «размытию» в sincedb файла, по умолчанию: при $ HOME / .sincedb * см http://logstash.net/docs/1.3.3/inputs/file#sincedb_path
Поскольку файл db содержит строку, которая выглядит так:
Итак, если вы хотите снова разобрать полный файл, вам необходимо:
ls -i yourFile | awk '{print $1}'
)С ключом
start_position => "beginning"
Logstash проанализирует весь файл.Пример файла sincedb:
.sincedb_7a7413a84171aa550d5318c17fd756e9
имя содержит sincedb_ и MD5 (Digest :: MD5.hexdigest) всего каталога в ключевом пути ( http://logstash.net/docs/1.3.3/inputs/file#path ). См. Код файла плагина: https://github.com/logstash/logstash/blob/master/lib/logstash/inputs/file.rb#L105источник
start_position => "beginning"
документации:> Этот параметр изменяет только ситуации «первого контакта», когда файл новый и ранее не просматривался. Если файл уже просматривался ранее, этот параметр не действует.Logstash сохранит запись в
$HOME/.sincedb_*
. Вы можете удалить все.sincedb
и перезапустить logstash, Logstash повторно проанализирует файл.источник
Объединив все ответы, думаю, это лучший способ разбирать файлы. Я сделал то же самое для своего тестирования.
Вместо этого для быстрой проверки
ignore_older
вы такжеtouch /tmp/access_log
можете изменить метку времени файла.источник
ignore_older => 0
приведет к обратному.Если вы используете logstash-forwarder,
.logstash-forwarder
вместо этого проверьте свой дом на наличие файла:источник
/var/lib/logstash-forwarder/
.После удаления
$HOME/.sincedb_*
он все еще не получал данные для меня.Попробовав кучу вещей, я удалил все, кроме основного
.conf
файла,/etc/logstash/conf.d
и перезапустил Logstash, и все сработало. Я могу только предположить, что в одном из.conf
файлов было что-то, на котором молча висел logstash.источник
На самом деле повторный анализ каждый раз очень дорого обходится, если файл содержит большие данные. Поэтому перед этим нужно быть осторожным. Если мы хотим заставить его снова выполнить повторный анализ, установите параметр внутри блока ввода
Эта опция не будет сохранять файл .sincedb, и logstash будет повторно анализироваться каждый раз. Но если вы хотите время от времени обрабатывать заново, а не каждый раз, то вы можете вручную удалить путь .sinceDb, который создается при разборе файла. Обычно он присутствует в домашнем каталоге как скрытый файл, если вы не являетесь пользователем root, в противном случае - в корневом каталоге. Вы также можете установить sincedb_path в другое место, чтобы легко отслеживать этот файл.
источник
Если вы хотите избежать путаницы с параметрами logstash, я обнаружил, что переименование или удаление существующего файла журнала и создание нового файла из старого содержимого файла заставят logstash повторно проиндексировать.
источник
Я нашел его в своем домашнем каталоге, но после его удаления logstash отказался повторно выбирать существующие файлы журнала. Я заставил это работать, добавив
в мой файловый плагин. Думаю каждый раз сбрасывать, просто меняем путь sincedb_path
источник
если вы используете tar.gz install filebeat, вы можете удалить этот файл
$FilebeatPath/data/registry/filebeat/data.json
, и повторно запустить filebeatисточник
Попробуйте удалить
/var/lib/logstash
папку в вашем ENVисточник
logstash версии 5 новый каталог находится в
определение path.data находится в logstash.yml
источник