2016-06-02 4 views
0

У меня есть файл журнала в формате JSON с одной строки в нем:Logstash считывает данные из стандартного ввода, но не из файла

{"@timestamp":"2016-06-02T13:56:49.235+00:00","thread_name":"qtp485047320-228","level":"ERROR","host":"domain.com","class":"MyClass","url":"/my-url","ip":"12.122.122.122","message":"Exception caught by exception handler.","user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36","stacktrace":"com.test.exceptions.NotFoundException: NotFoundException for parameter [12345678-1234]. Message: url was not found by service.]"} 

И это мой logstash.conf файл:

input { 
    # stdin {} 
    file { 
     path => "/Users/me/Applications/logstash-2.3.1/examples/json_input.1.log" 
     start_position => "beginning" 
    } 
} 
filter { 

    json{ 
     source => "message" 
    } 

    geoip { 
     source => "ip" 
     target => "geoip" 
    } 
} 
output { 
    stdout { 
     codec => rubydebug 
    } 
    elasticsearch { 
     hosts => ["localhost:9200"] 
     index => "logstash-app-errors" 
    } 
} 

Как вам можно увидеть, в разделе ввода я использовал stdin (теперь в комментарии), а затем я изменил, чтобы прочитать данные из файла.
Проблема заключается в том, что когда я использую stdin и вставляю json-данные (1 строка), все работает отлично, и я вижу данные в elasticSearch, но когда я меняю его на файл, ничего не происходит ...
Я также добавил --debug param для выполнения команды logstash ./logstash agent -f logstash.conf --debug, но не смог увидеть ничего подозрительного в отладочном выходе.

Что мне не хватает?

+0

Вы уже проверили свои права? Как вы установили/запустили logstash. Logstash как служба запускается с пользователем logstash. этот пользователь не сможет получить доступ к файлам журналов, находящимся в вашей домашней папке. К сожалению, вход в файл не будет сообщать об этой ошибке. Переместите свой файл журнала в другое место (например,/var) или (в качестве теста) используйте chmod 777 или что-то, чтобы дать каждому доступ к вашему файлу. – pandaadb

+0

спасибо @pandaadb, но это не сработало для меня. Это не логсташ как служба + ранее, сегодня я смог прочитать из этого файла. Я переместил файл в/var/log, и он не помог, также пытается sudo ./logstash без успеха ... – ItayD

+0

еще одна вещь - я удаляю .sincedb перед каждой попыткой. – ItayD

ответ

0

Обнаружена проблема - если входной файл имеет только одну строку данных, вы должны добавить пустую новую строку. Это решило мою проблему. не могу поверить, что я провел так много времени на то одном ...

Edit:
Открыт вопрос упругим, вы можете следить за статусом выпуска here

+0

, который звучит странно: D хорошо, что вы это выяснили, хотя – pandaadb

+0

Я думаю, что его разделитель по умолчанию является «\ n», поэтому, когда его единственная строка не имеет «\ n», но EOF. Я думаю, что это причина ошибки. – ItayD

+0

вы можете поднять его с помощью logstash, если это ошибка :) – pandaadb

Смежные вопросы