2016-08-30 5 views
0

у меня есть три узла установкиотправки JSON от одного к другому logstash

10.xx1 - приложение и filebeat 10.xx2 - машина для синтаксического анализа и logstash 10.xx3 - имея централизованный узел logstash откуда нам нужно вставлять сообщения в Elastic Search

в 10.xx2, когда я устанавливаю выходной кодек в стандартный вывод, я могу видеть сообщения, поступающие с 10.xx1.

Теперь мне нужно переслать все сообщения json от 10.x.x.2 до 10.x.x.3. Я попытался использовать TCP. Но сообщения не отправляются.

10.xx2 logstash конф файл

input { 
    beats { 
    port => 5045 
    } 
} 


output{ 
#stdout { codec => rubydebug } 
tcp{ 
host => "10.x.x.3" 
port => 3389 
} 

10.xx3 logstash конф файл

input{ 
tcp{ 
host => "10.x.x.3" 
port => 3389 
#mode => "server" 
#codec => "json" 
} 
} 

output{ 
stdout{ codec => rubydebug } 
} 

есть ли плагин, который может передавать данные в формате JSON от одного logstash на другой сервер logstash

+0

TCP сложно использовать как выход для json из-за возможных символов новой строки на вашем json-выходе. Хороший способ сделать то, что вам нужно, - использовать выход Gelf (поскольку он генерирует действительный json). –

ответ

1

Ваша конфигурация должна работать.

Но вы должны быть уверены в свойствах «кодека».

Попробуйте сначала установить его на «линию» на выходе И входные плагины двух логсташей.

И посмотреть, поступают ли журналы.

С кодеком, установленным в «line», у вас не будет логически проблем для пересылки журналов.

Затем работайте над свойствами «json».

Не забывайте, что вы можете активировать режим отладки logstash с аргументом --debug, и вы можете войти с аргументами: -l LogFilename

Когда вы начинаете работать с кодеком JSon ищет «_jsonparsefailure ", что может объяснить, почему он не передает журналы между двумя логсташами.

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