ELK部署中Logstash遇java.net.SocketException: Connection Reset问题求助
排查Logstash TCP连接重置(java.net.SocketException: Connection reset)问题
以下是按优先级排序的排查步骤:
1. 网络连通性验证
- 在Logstash服务器和客户端服务器分别执行端口连通测试:
- Logstash服务器侧:
nc -zv 172.16.12.208 5000 - 客户端侧:
nc -zv <Logstash服务器IP> 5000
确认双向无防火墙、安全组、iptables规则拦截5000端口的TCP流量。
- Logstash服务器侧:
- 检查Logstash端口监听状态:
ss -tulpn | grep 5000,确认进程确实在监听5000端口,且绑定地址为0.0.0.0或客户端可访问的IP(而非仅127.0.0.1)。
2. 数据格式与Codec匹配检查
你的TCP输入配置指定了codec => "json",要求客户端发送的每条日志必须是合法JSON格式且以换行符分隔。若数据格式不匹配,Logstash会直接断开连接:
- 临时修改配置切换为
linecodec测试:
input { tcp { port => 5000 codec => "line" } }
若切换后连接正常,说明问题出在客户端发送的数据不符合JSON格式要求。
- 用nc工具模拟合法JSON数据发送:
echo '{"test": "sample_log"}' | nc <Logstash服务器IP> 5000,观察Logstash日志是否仍报错,同时确认数据是否能被正常接收。
3. Logstash进程资源与权限排查
- 确认Logstash进程有权限监听5000端口(高位端口无需root权限,但若存在特殊权限限制需排查)。
- 检查服务器CPU、内存、磁盘IO状态,排除资源耗尽导致进程无法处理连接的情况。
- 查看Logstash完整日志,排查是否存在 codec 初始化失败、线程池耗尽等关联报错。
4. 客户端配置验证
- 核对客户端应用的日志发送配置:目标IP、端口、协议(TCP)、数据格式(JSON)是否正确,是否开启了不合理的超时或重试机制。
- 查看客户端应用本地日志,排查是否存在连接超时、发送被拒绝等本地报错信息。
内容的提问来源于stack exchange,提问作者maryem neyli
相关产品推荐
相关产品推荐

