在 logstash 上监听多个 UDP 端口

Listening on multiple UDP ports on logstash

我有一个简单的 ELK 设置 运行 在一台机器上,使用 Logstash 读取自定义格式的日志消息并使用 Elasticsearch/Kibana.

分析数据

基于对 this Whosebug post 的回复之一中的配置文件,我在我的 conf 文件中添加了多个 udp 输入条目,其中一部分显示如下:

input {
  udp {
    type => "log_type_1"
    port => 9999
  }
  udp {
    type => "log_type_2"
    port => 9998
  }
  udp {
    type => "log_type_3"
    port => 9997
  }
}

当我重新启动 logstash 服务并检查 /var/log/logstash/logstash 下的日志时,我看到错误消息:

{:timestamp=>"2015-02-17T18:15:56.032000-0800", :message=>"UDP listener died", :exception=>#<SocketError: bind: name or service not known>, :backtrace=>["org/jruby/ext/socket/RubyUDPSocket.java:160:in `bind'", "/opt/logstash/lib/logstash/inputs/udp.rb:69:in `udp_listener'", "/opt/logstash/lib/logstash/inputs/udp.rb:50:in `run'", "/opt/logstash/lib/logstash/pipeline.rb:163:in `inputworker'", "/opt/logstash/lib/logstash/pipeline.rb:157:in `start_input'"], :level=>:warn}

关于我在这里做错了什么有什么想法吗?我使用 --configtest 标志尝试 运行ning logstash,我没有发现我的配置有任何问题。我猜它只检查语法正确性。

谢谢!

原来 实际上支持多个 UDP 端口(没有理由不支持)。一个简单的

netstat -alp | grep <port_number>

向我展示了我们当前正在使用的端口,我设法通过更改端口号解决了这个问题。

谢谢!