【问题标题】:Logstash not receiving data from kafka running inside docker(compose) using port other than 9092Logstash 未使用 9092 以外的端口从在 docker(compose) 内运行的 kafka 接收数据
【发布时间】:2021-10-14 17:34:24
【问题描述】:

我想将kafka与elk stack一起使用,其中filebeat从文件中读取日志并将数据发送到kafka,然后将其发送到logstash。我正在使用 docker-compose 文件运行 kafka。

我设法通过使用 kafka 的默认端口 9092 来运行它,但问题是我的组织已经在端口 9092 上运行了一些其他服务。所以我在我的 docker-compose 中使用了 9095 作为主机,并在容器内使用了 9092。

当我尝试在 kafka 中使用 filebeat 和 logstash 时,数据没有进入 logstash。我可以看到 logstash 订阅了我创建的主题,但即使我从控制台生产者发送消息,它也没有获取任何数据。但是当我使用控制台生产者和控制台消费者时,它工作正常。但它不适用于在容器外运行的 logstash 和 filebeat。

这是我用于 kafka 的 docker-compose 文件:

version: "3"
services:
  zookeeper:
    image: wurstmeister/zookeeper
    container_name: zookeeper
    ports:
    - 2181:2181

 

  kafka:
    image: wurstmeister/kafka
    container_name: kafka
    ports:
    - 9095:9092
    environment:
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
      KAFKA_LISTENERS: INSIDE://:9092,OUTSIDE://:9095
      KAFKA_ADVERTISED_LISTENERS: INSIDE://172.18.0.3:9092,OUTSIDE://192.168.135.57:9095
      KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE

这里 192.168.135.57 是我的主机地址(我机器的公共 IP),172.18.0.3 是运行 kafka 的 docker 容器的地址。 这是我的 logstash 配置文件:

input {
  kafka
    {
            bootstrap_servers => "192.168.135.57:9095"
            topics => "topicname"
    }
}

output {
    stdout{codec => rubydebug}
    elasticsearch {
        hosts =>  "http://localhost:9200"
        index => "topic-test"    
    }
}

这是我在filebeat中用来向kafka发送数据的:

output.kafka:
  hosts: ["192.168.135.57:9095"]
  topic: "topicname"

我无法弄清楚这条管道有什么问题。我想在主机上的端口 9095(或除 9092 之外的任何其他端口)上运行此 docker-compose。帮助将不胜感激。

【问题讨论】:

  • 你的kafka容器端口不应该是9095:9095吗?使用9095:9092,您需要使用192.168.135.57:9092 连接到kafka,因为内部端口9095 映射到外部端口9092
  • @leandrojmp 我尝试将 9095:9092 更改为 9095:9095 但仍然无法正常工作。

标签: docker apache-kafka docker-compose logstash


【解决方案1】:

您仍在将主机上的 9095 映射到通告的 INSIDE 侦听器

您应该使用9095:9095 映射到OUTSIDE 侦听器,如果这是其他客户端将连接的内容

【讨论】:

  • 所以,我应该使用 9095:9095 而不是 9095:9092?
  • 这就是为什么我的回答说,是的,但你也应该在KAFKA_LISTENERS 中有OUTSIDE://0.0.0.0:9095
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-01
  • 2016-07-19
  • 2020-04-08
  • 1970-01-01
  • 2019-04-01
  • 2020-02-17
  • 2016-11-07
相关资源
最近更新 更多