logstash простой ввод/вывод файла

У меня проблемы с запуском logstash. Базовый пример logstash работает. Но затем я борюсь с примером расширенного конвейера. Возможно, это также может быть проблема с elasticsearch.

Теперь я просто хочу проверить, работает ли простой пример:

  • ввод: прочитать текстовый файл-a
  • вывод: создать новый текстовый файл-b с вводом текстового файла-а

Но я борюсь с этим. Мой конфиг следующий:

# foo.conf
input {
    file {
        path => "C:/logstash-2.3.1/logstash-tutorial-dataset"
        start_position => "beginning"
    }
}
output {
    stdout {}
    file {
        #message_format => "%{foo},%{bar},%{fii},%{bor},%{bing}" 
        #codec => { line { format => "custom format: %{message}"}}
        path => "C:/output.txt"
    }
}

Когда я запускаю logstash, я получаю следующий ответ, и ничего не происходит.

bin/logstash -f foo.conf -v --debug --verbose
io/console not supported; tty will not be manipulated
{:timestamp=>"2016-04-22T13:41:15.514000+0200", :message=>"starting agent", :level=>:info}
{:timestamp=>"2016-04-22T13:41:15.518000+0200", :message=>"starting pipeline", :id=>"main", :level=>:info}
{:timestamp=>"2016-04-22T13:41:16.035000+0200", :message=>"Registering file input", :path=>["C:/logstash-2.3.1/logstash-tutorial-dataset"], :level=>:info}
{:timestamp=>"2016-04-22T13:41:16.039000+0200", :message=>"No sincedb_path set, generating one based on the file path", :sincedb_path=>"c:/Users/foobar/.sincedb_802dc9c88c8fad631bf3d3a5c96435e4", :path=>["C:/logstash-2.3.1/logstash-tutorial-dataset"], :level=>:info}
{:timestamp=>"2016-04-22T13:41:16.103000+0200", :message=>"Starting pipeline", :id=>"main", :pipeline_workers=>4, :batch_size=>125, :batch_delay=>5, :max_inflight=>500, :level=>:info}
{:timestamp=>"2016-04-22T13:41:16.106000+0200", :message=>"Pipeline main started"}

как заставить простой пример работать?


person jerik    schedule 22.04.2016    source источник


Ответы (2)


ignore_older => 0 сделал свое дело, см. документацию: игнорировать_старее.

Рабочая конфигурация следующая:

# foo.conf
input {
    file {
        path => "C:/logstash-2.3.1/logstash-tutorial-dataset"
        start_position => "beginning"
        ignore_older => 0  
    }
}
output {
    stdout {}
    file {
        path => "C:/output.txt"
    }
}

Теперь файл .sincedb* содержит также контент.

person jerik    schedule 17.10.2016

Logstash запоминает, какие файлы он обработал и сколько из них он обработал. При нормальной работе это позволяет перезапустить его в случае сбоя и не обрабатывать журналы повторно.

В вашем случае я предполагаю, что ваш файл журнала уже был обработан один раз, поэтому logstash его игнорирует. Предоставленный вами параметр start_position задокументирован и применяется только к новым файлам.

Вам нужно либо сбросить настройки реестра (например, такие файлы, как /var/lib/logstash/.sincedb*), либо установить для параметра sincedb_path в вашем файле {} значение /dev/null, чтобы он не поддерживал историю во время тестирования.

person Alain Collins    schedule 22.04.2016
comment
Поскольку БД пуста. Я удалял его несколько раз, но результат не изменился. Что-то проводное. Есть ли еще один простой тест Hello World, который я могу запустить для теста? - person jerik; 26.04.2016
comment
Если файл пуст, то logstash не обрабатывает ваш файл. Возможно, он уже устарел (см. ignore_older)? - person Alain Collins; 27.04.2016