在logstash上侦听多个UDP端口

时间:2015-02-18 02:19:41

标签: logstash

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

基于对this stackoverflow帖子的回复中的配置文件,我在我的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标记运行logstash,但我发现配置没有任何问题。我猜测它只检查语法正确性。

谢谢!

1 个答案:

答案 0 :(得分:2)

事实证明,实际上支持多个UDP端口 (没有理由不这样做)。一个简单的

netstat -alp | grep <port_number>

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

谢谢!