我有一个简单的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,但我发现配置没有任何问题。我猜测它只检查语法正确性。
谢谢!
答案 0 :(得分:2)
事实证明,实际上支持多个UDP端口 (没有理由不这样做)。一个简单的
netstat -alp | grep <port_number>
向我展示了我们当前使用的端口,并设法通过更改端口号来解决问题。
谢谢!