【发布时间】:2015-04-24 14:33:09
【问题描述】:
我正在尝试从 docker 映像启动 Logstash,以将日志发送到在另一个 docker 容器上运行的 RabbitMQ 实例。
我链接了两个容器并使用以下命令和配置文件启动了 Logstash:
docker run --link rabbitmq:rabbit -it log-sender logstash -f config.conf
config.conf:
input {
stdin {
}
}
output {
rabbitmq {
host => "RABBIT_PORT_5672_TCP_ADDR"
exchange => "test_exchange"
exchange_type => "fanout"
}
}
我得到以下错误:
RabbitMQ 连接错误:与 RABBIT_PORT_5672_TCP_ADDR:5672 的连接被拒绝:主机未知。将在 10 秒内尝试重新连接... {:exception=>#, :backtrace=>["/opt/logstash/vendor/bundle/jruby/1.9/gems/march_hare- 2.1.2-java/lib/march_hare/session.rb:361:in 'converting_rjc_exceptions_to_ruby'" , "/opt/logstash/vendor/bundle/jruby/1.9/gems/march_hare-2.1.2-java/lib/march_ha re/session.rb:382:in 'new_connection_impl'", "/opt/logstash/vendor/bundle/jruby/ 1.9/gems/march_hare-2.1.2-java/lib/march_hare/session.rb:82:in '初始化'", "/ ... uts/rabbitmq/march_hare.rb:18:in '注册'", "org/jruby/RubyArray.java:1613:in '每个'", "/opt/logstash/lib/logstash/pipeline.rb:220:in 'outputworker'", "/opt/l ogstash/lib/logstash/pipeline.rb:152:in `start_outputs'"], :level=>:error}
rabbit docker 是base image,使用以下命令运行:
docker run -d -p 5672:5672 -p 15672:15672 rabbitmq
似乎由于某种原因,我的 Logstash 映像无法访问 RabbitMQ 映像的端口。使用 curl 从端口 5672 上的主机使用时,我可以获得响应“AMPQ”,但不能从 Logstash 图像中获得响应。
【问题讨论】:
-
主机
RABBIT_PORT_5672_TCP_ADDR是否可达?可能您必须指定容器主机名(-h或--hostname)并在配置中使用它,或者如果您的 logstash 也驻留在容器中,那么简单的localhost就可以了。