如何运行logstash-2.4.0

当我尝试ELK时,我安装了logstash-2.4.0。 我写了log4j_to_es.conf 。 当我运行./bin/logstash agent -f config/log4j_to_es.conf我得到一个错误。

 Settings: Default pipeline workers: 4 Pipeline aborted due to error {:exception=>"Errno::EADDRNOTAVAIL", :backtrace=>[ "org/jruby/ext/socket/RubyTCPServer.java:118:in `initialize'", "org/jruby/RubyIO.java:871:in `new'", "/home/tools/logstash-2.4.0/vendor/bundle/jruby/1.9/gems/logstash-input-log4j-2.0.7-java/lib/logstash/inputs/log4j.rb:71:in `register'", "/home/tools/logstash-2.4.0/vendor/bundle/jruby/1.9/gems/logstash-core-2.4.0-java/lib/logstash/pipeline.rb:330:in `start_inputs'", "org/jruby/RubyArray.java:1613:in `each'", "/home/tools/logstash-2.4.0/vendor/bundle/jruby/1.9/gems/logstash-core-2.4.0-java/lib/logstash/pipeline.rb:329:in `start_inputs'", "/home/tools/logstash-2.4.0/vendor/bundle/jruby/1.9/gems/logstash-core-2.4.0-java/lib/logstash/pipeline.rb:180:in `start_workers'", "/home/tools/logstash-2.4.0/vendor/bundle/jruby/1.9/gems/logstash-core-2.4.0-java/lib/logstash/pipeline.rb:136:in `run'", "/home/tools/logstash-2.4.0/vendor/bundle/jruby/1.9/gems/logstash-core-2.4.0-java/lib/logstash/agent.rb:491:in `start_pipeline'"], :level=>:error} stopping pipeline {:id=>"main"} 

log4j_to_es.conf是这样的:

 input { log4j { mode => "server" host => "120.13.243.95" port => 4567 } } output { elasticsearch { action => "index" hosts => "192.168.1.54:9200" index => "applog" } } 

系统是CentOS 7.2.1511。 input是另一台服务器。 输出是localhost。

您在input中指定的IP地址在运行logstash的系统上不可用。 我假设你在那里提供的IP是发送日志的系统的IP地址?

如果是这样,你误解了configuration语法。 您不需要在input中指定IP地址。 如果您省略该条目,logstash将监听所有可用的接口。 另一方面,如果确实只希望logstash监听特定的IP,则需要确保指定的IP是在Logstash服务器上configuration的IP。

– 编辑:你想logstash接收你的log4j发送的消息? 如果是这样,上述修复适用。 另一方面,如果您希望logstash连接到远程服务器上的log4j实例,则只需将“模式”从“服务器”更改为“客户端”即可。

你读过logstash log4j文档吗? 这一切都很清楚。