You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Logstash通过UDP收集防火墙日志时遇地址占用错误

解决Logstash UDP端口被占用问题

错误日志:

^X[INFO ] 2022-08-07 22:24:52.211 [[main]<udp] udp - Starting UDP listener {:address=>"192.168.80.90:5144"}
[ERROR] 2022-08-07 22:24:52.215 [[main]<udp] udp - UDP listener died {:exception=>#<Errno::EADDRINUSE: Address already in use - bind - Ne peut attribuer l'adresse demandéebind(2) for "192.168.80.90" port 5144>, :backtrace=>["org/jruby/ext/socket/RubyUDPSocket.java:200:in bind'", "/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-input-udp-3.5.0/lib/logstash/inputs/udp.rb:129:in udp_listener'", "/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-input-udp-3.5.0/lib/logstash/inputs/udp.rb:81:in run'", "/usr/share/logstash/logstash-core/lib/logstash/java_pipeline.rb:410:in inputworker'", "/usr/share/logstash/logstash-core/lib/logstash/java_pipeline.rb:401:in `block in start_input'"]}

解决步骤:

  • 定位占用端口的进程
    执行命令查找UDP 5144端口的占用者:

    ss -ulpn | grep :5144
    

    或者使用netstat(系统已安装的情况下):

    netstat -ulpn | grep :5144
    

    输出结果会显示占用端口的进程ID(PID)和进程名称。

  • 处理占用进程

    1. 若占用进程无保留必要,直接终止:
      kill -9 <PID>
      
      之后重启Logstash即可。
    2. 若占用进程必须保留,修改Logstash监听端口:
      打开Logstash输入配置文件,找到UDP输入模块,将port改为未被占用的端口(例如5145):
      input {
        udp {
          host => "192.168.80.90"
          port => 5145
          codec => "syslog" # 根据防火墙日志格式调整,如json、plain等
        }
      }
      
      同时更新防火墙的日志输出端口为新端口,确保日志能正常发送到Logstash。
  • 验证端口可用性
    用nc测试端口是否可被监听:

    nc -ul 192.168.80.90 5144
    

    若提示Address already in use,说明端口仍被占用;若命令无输出且处于等待状态,说明端口可用。

内容的提问来源于stack exchange,提问作者jamaa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 15:54:41