[英]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.