当我尝试 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。输入是另一台服务器。输出是localhost。
答案1
您在输入中指定的 IP 地址在运行 logstash 的系统上不可用。我假设您在此处提供的 IP 是发送日志的系统的 IP 地址?
如果是这样,则说明您误解了配置语法。您不需要在输入中指定 IP 地址。如果省略该条目,logstash 将监听所有可用接口。另一方面,如果您确实只希望 logstash 监听特定 IP,则需要确保指定的 IP 是在 logstash 服务器上配置的 IP。
-- 编辑:您是否希望 logstash 接收 log4j 发送的消息?如果是,则上述修复适用。另一方面,如果您希望 logstash 连接到远程服务器上的 log4j 实例,那么您需要做的就是将“模式”从“服务器”更改为“客户端”。
你读过logstash log4j 文档? 这一切都很清楚。