我在使用一个简单的Java应用程序向我的Logstash实例发送日志数据时遇到了一些问题。对于我的使用情况,我试图避免使用log4j、logback等工具,而是通过一个原始的TCP套接字将JSON事件分批处理并分行发送。这样做的原因是我希望通过AWS Lambda函数将数据发送到Logstash,这意味着将日志存储到磁盘上可能行不通。
我的Logstash配置文件如下:
input {
tcp {
port => 5400
codec => json
}
}
filter{
json{
source => "message"
}
}
output {
elasticsearch {
host => "localhost"
protocol => "http"
index => "someIndex"
}
}
目前我的Java代码只是打开一个TCP套接字到Logstash服务器并直接发送事件。
Socket socket = new Socket("logstash-hostname", 5400);
DataOutputStream os = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream()));
os.writeBytes("{\"message\": {\"someField\":\"someValue\"} }");
os.flush();
socket.close();
应用程序与logstash主机进行连接正常(如果logstash没有启动,则在连接时会抛出异常),但在我们的ES集群中没有显示任何事件。 如何解决这个问题,非常感谢您提供的任何想法!在logstash.err、logstash.log或logstash.stdout中没有看到任何相关日志,指出可能出了什么问题。