2015-09-23 2 views
2

Я начинаю исследовать logstash, и это, вероятно, вопрос новичков, но насколько я изучил это, нужно работать, а это не так.logstash file input glob не работает

У меня очень простая конфигурация, которая просто считывает файлы журналов и выгружает их в стандартный вывод. Он работает для одного файла и для списка (массива) файлов, но если я использую glob, который соответствует тем же файлам, ничего не происходит.

Я проверил glob с коротким рубиновым скриптом и перечисляет правильные файлы.

Вот моя конфигурация:

input { 
    file { 
     path => "/home/lpacheco/*.log" 
     start_position => "beginning" 
    } 
} 

output { 
    stdout {} 
} 

Если я бегу это с --verbose я получаю:

{:timestamp=>"2015-09-23T11:26:47.008000-0300", :message=>"Registering file input", :path=>["/home/lpacheco/*.log"], :level=>:info} 
{:timestamp=>"2015-09-23T11:26:47.068000-0300", :message=>"No sincedb_path set, generating one based on the file path", :sincedb_path=>"/home/.sincedb_6da9e0c63851aa9d5840ba19efd196cb", :path=>["/home/lpacheco/*.log"], :level=>:info} 
{:timestamp=>"2015-09-23T11:26:47.089000-0300", :message=>"Pipeline started", :level=>:info} 

Ничто не происходит.

Я использую:

  • logstash 1.5.4
  • OpenJDK Runtime Environment (IcedTea 2.5.6) (7u79-2.5.6-0ubuntu1.14.04.1)
  • рубин 1,9 .3p484 (2013-11-22 редакция 43786) [i686-Linux]

ответ

3

Вы, видимо, столкнулись с sincedb -эмиссионный. Logstash сохраняет последнюю позицию файла журнала в файле sincedb. Sincedb основан на inode файла журнала, так что переименование или использование глобусов не имеет никакого эффекта.

Попробуйте этот вход для тестирования:

input { 
    file { 
     path => "/home/lpacheco/*.log" 
     start_position => "beginning" 
     sincedb_path => "/dev/null" 
    } 
} 

Из последних Документах

Путь к файлу базы данных sincedb (отслеживает текущее положение отслеживаемых файлов журналов), которые будут записаны на диск. По умолчанию будет писать sincedb файлы в какой-то путь согласования $ HOME/.sincedb * Примечание: должен быть путь к файлу, а не путь к каталогу

Для получения дополнительной информации, посмотрите на смежные вопросы, как this.

+0

Отлично, используя «/ dev/null», поскольку работа sincedb_path работала, как и указание имени файла. Однако в чем проблема с параметром? – lpacheco

+0

Хорошо, вы прибили его, и это проблема sincedb_path, но я думаю, что фактическая проблема заключается в том, что мой файл журнала не «живой», это копия с нашего производственного сервера. Я думал, что использование 'start_position => "begin"' позволит мне продолжать повторное использование файла, но это не сработало. 'sincedb_path => "/ dev/null" "игнорирует sincedb, но не полезен как фактическая конфигурация. Думаю, удаление файла sincedb - лучшее решение. – lpacheco

+1

Ты прав. 'sincedb_path =>"/dev/null "' предназначен только для тестирования. Вы не должны использовать его в продуктивной среде. В продуктивном случае удаление файлов sincedb является лучшим подходом для повторной обработки журналов. 'start_position =>" begin "' немного запутанно в этой ситуации, и вы не единственный, кто наткнулся на него. – hurb