Мой файл конфигурации показан ниже:
input {
file {
codec => "json"
path => "/home/data/*"
sincedb_path => "/dev/null"
}
}
output {
elasticsearch{
protocol => "http"
host => "localhost"
index => "data"
}
}
Когда я загружаю файл .json в каталог data
, logstash не будет получать данные или выводить их в elasticsearch, если я сначала не открою файл и не сохраню его в gedit.
Запуск logstash с флагом -vvv
не показывает ошибок, все, что я получаю, когда файл помещается в этот каталог,
_discover_file: /home/data/*: new: /home/data/prediction1.json (exclude is []) {:level=>:debug, :file=>"filewatch/watch.rb", :line=>"126"}
_open_file: /home/data/prediction1.json: opening {:level=>:debug, :file=>"filewatch/tail.rb", :line=>"98"}
/home/data/prediction1.json: staying at position 0, no sincedb {:level=>:debug, :file=>"filewatch/tail.rb", :line=>"143"}
writing sincedb (delta since last write = 377) {:level=>:debug, :file=>"filewatch/tail.rb", :line=>"177"}
/home/data/prediction1.json: file grew, old size 0, new size 3952 {:level=>:debug, :file=>"filewatch/watch.rb", :line=>"81"}
Это заставило меня поверить, что может быть проблема с кодировкой символов, поскольку файл json создается с использованием json.dumps
в python до достижения elasticsearch. Я попытался преобразовать данные в yaml:
outfile.write(yaml.dump(json.dumps(data)))
который logstash принимает как обычный текст, как сейчас в форме:
'data:{ properties:
{ location:
{ here }}}'
после использования команд sed и tr для преобразования этого НАЗАД в действительный json logstash больше не принимает его, если он не сохранен через gedit !!!
json.dumps()
генерирует строку. Запись этой строки с помощьюyaml.dump()
не выполняет преобразование, она только заключает строку в одинарные кавычки. (Кстати, вы можете просто указать поток в качестве второго параметра дляyaml.dump()
, нет необходимости сначала хранить его в буфере StringIO, а затем записывать). - person Anthon   schedule 14.04.2015od -c filename
как для рабочей, так и для нерабочей версии файла и включить вывод в свой пост? - person Anthon   schedule 14.04.2015od -c filename
выводит весь json? - person LSkuse   schedule 15.04.2015