要输出到卡夫卡的日志插件不起作用



我正在尝试将消息从 Logstash 发送到 Kafka,但不断收到以下错误:

tail -f /var/log/logstash/logstash-plain.log
[2018-04-18T17:55:33,836][WARN ][org.apache.kafka.clients.NetworkClient] 
[Producer clientId=producer-1] Connection to node -1 could not be established. Broker may not be available.
[2018-04-18T17:55:46,095][INFO ][logstash.outputs.kafka   ] Sending batch to Kafka failed. Will retry after a delay. {:batch_size=>1, :failures=>1, :sleep=>0.1}
[2018-04-18T17:55:51,979][INFO ][logstash.outputs.kafka   ] Sending batch to Kafka failed. Will retry after a delay. {:batch_size=>1, :failures=>1, :sleep=>0.1}
[2018-04-18T17:56:46,196][INFO ][logstash.outputs.kafka   ] Sending batch to Kafka failed. Will retry after a delay. {:batch_size=>1, :failures=>1, :sleep=>0.1}]

这以前是有效的,但现在不是,我不确定自从机器未动过以来发生了什么变化。

我可以通过运行 Kafka 的机器上的控制台生产者以及运行 Logstash 的机器以及从 VPC 之外的远程机器与 Kafka 通信,所以我不认为这是网络错误。可以肯定的是,我将 Logstash 与 Kafka 放在同一台机器上,但我得到了同样的错误。

仔细检查并确保我使用的是最新版本的 Kafka、Logstash 和 logstash-output-kafka 插件,所以我认为这也不是兼容性问题。我尝试重新启动 Logstash 和经纪人无济于事。

基本上,我不知道如何解决这个问题。任何帮助将不胜感激。谢谢。

好吧,我想通了。这是logstash.conf文件中的配置问题:当我将kafka输出更改为机器的本地IP地址时,它可以工作。它似乎不适用于公共或私人主机名或公共 IP 地址。由于我使用的是具有多个 kafka 主题的条件,如下所示:

output {
  kafka {
    bootstrap_servers => "10.0.0.XX:9092"
    codec => json
    topic_id => "test_topic"
  }
  if [type] == "ping" {
    kafka {
      bootstrap_servers => "10.0.0.XX:9092"
      codec => json
      topic_id => "logstash-ping"
    }
  }
  else if [type] == "snmp" {
    kafka {
      bootstrap_servers => "10.0.0.XX:9092"
      codec => json
      topic_id => "logstash-snmp"
    }
  }
}

如果其中任何一个设置不正确,它不会发送给其中任何一个,尽管从我在 logstash 日志中看到的连接正确。

作为参考,我对侦听器和广告听众的设置如下所示:

listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://ec2-XX-XX-XX-XX.compute-1.amazonaws.com:9092

最新更新