1:首先确认logstash的配置文件的input是使用tcp协议的。
登陆linux服务器执行命令 cat /etc/logstash/conf.d 结果如下:
input {
tcp {
mode => "server"
host => "0.0.0.0"
port => 5044
codec => json_lines
}
}
output {
elasticsearch {
hosts => "localhost:9200"
index => "%{[appname]}-%{+YYYY.MM}"
}
}
2:编写java代码,使用socket
SocketChannel socketChannel = SocketChannel.open(new InetSocketAddress("127.0.0.1", 5044));
//这里将你的实体类转成json
String json = JSON.toJSONString(日志实体类);
//特别注意 ,json换行,换行代表数据发送完毕,要不然logstash会一直接收数据,从而导致数据格式错误无法将数据写到es
json += "\r\n";
ByteBuffer buf = ByteBuffer.allocate(json.getBytes().length);
buf.put(json.getBytes());
buf.flip();
while (buf.hasRemaining()) {
socketChannel.write(buf);
}
buf.clear();