繁体   English   中英

通过TCP将JSON发送到Logstash,保持连接打开状态,从不显示

[英]Sending json to logstash over tcp, keeping connection open, never show up

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

但是,当我将其指向实际logtash时,什么也没有出现。 我可以“ 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();
            }

确保在消息末尾发送换行符。 我发现即使从Windows框向运行Linux的Logstash发送“ \\ n”也能正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM