通过tcp将json发送到logstash,保持连接打开,永不显示

时间:2016-04-01 02:03:16

标签: java tcp logstash

下面的代码在一个线程中运行,从队列中取出消息,然后将它们发送到logstash。我有一个单元测试证明json(它是消息的内容)使它进入套接字并进入另一端。

但是,当我将它指向实际的logstash时,没有任何事情发生过。我可以'nc'相同的内容,它出现了。当然,nc将在发送一条消息结束时关闭连接。如果我们失去连接,重新连接会有一些复杂性。

logstash配置非常简单:

input {
 tcp {
     port => 9191
     codec => json
     }
}
output {
    stdout {
       codec => rubydebug
    }
}


         while (true) {
                byte[] message = messages.take();
                executor.getWithRetry(() -> {
                    try {
                        if (socket == null) {
                            socket = new Socket(sinkAddress, port);
                        }
                        socket.getOutputStream().write(message);
                        return null;
                    } catch (IOException e) {
                        socket.close();
                        socket = null;
                        throw e;
                    }
                }).join();
            }

1 个答案:

答案 0 :(得分:1)

确保在邮件末尾发送换行符。我发现发送" \ n"即使从windows框到linux上运行的logstash也能正常工作。