logstash rabbitmq输出永远不会发布到交换

时间:2014-04-21 23:35:31

标签: rabbitmq logstash

  • 我已经运行了logstash,并成功读取了一个文件
    • rabbitmq正在运行,我正在看日志,我可以看到网络界面
    • 我已经将logstash配置为输出到rabbitmq交换......我想!

问题在于:没有任何内容可以发布到交易所,如网页界面所示。

有什么想法吗?

我的输出配置:

output {
            rabbitmq {
                    codec => plain
                    host => localhost
                    exchange => yomtvraps
                    exchange_type => direct
            }

        file { path => "/tmp/heartbeat-from-logstash.log" }
}

更新:我正在看兔子日志 tail -F /usr/local/var/log/rabbitmq/rabbit\@localhost.log

事实证明,问题在于没有为交换和队列设置路由密钥。

工作配置是:

output { 
   rabbitmq {
      codec => plain
      host => localhost
      exchange => yomtvraps
      exchange_type => direct
      key => yomtvraps

      # these are defaults but you never know...
      durable => true
      port => 5672
      user => "guest"
      password => "guest"
   }
}

这是一个接收器代码示例(使用ruby“Bunny”)

require "bunny"

conn = Bunny.new(:automatically_recover => false)
conn.start

ch   = conn.create_channel
q    = ch.queue("yomtvraps")

exchange    = ch.direct("yomtvraps", :durable => true)

begin
  puts " [*] Waiting for messages. To exit press CTRL+C"
  q.bind(exchange, :routing_key => "yomtvraps").subscribe(:block => true) do |delivery_info, properties, body|
    puts " [x] Received #{body}"
  end
rescue Interrupt => _
  conn.close

  exit(0)
end

1 个答案:

答案 0 :(得分:4)

  1. 您的rabbitmq参数似乎不够,用户名,密码和端口尚未配置。

  2. 您可以配置两个输出,一个是rabbitmq,另一个是文件,用于放置日志的创建和日志存储即可。

  3. 注意logstash的版本(log stash,rabbitmq插件),它在我之前的试用中给了我很多麻烦(登录到另一台redis服务器等)。

  4. 您可以调试rabbitmq的日志。

  5. ps -ef|grep erl您可以在参数中找到日志文件的路径。

    1. 确保启用了rabbitmq的网络管理器插件,并正确配置了防火墙,然后打开rabbitmq的网络管理器,ipaddress:15672

    2. 检查交换机的类型是否正常(在这种情况下'直接'可能是正确的选择),您的消息使用者配置正常,以及您的消费者的队列已被正确约束。

    3. 尝试通过网络管理员将消息发布给您的消费者,并确保消费者能够顺利运作。

    4. 在日志存储推送登录到您的消费者时监控您的队列。