Logstash 未使用 9092 以外的端口从 docker(compose) 中的 kafka 运行 接收数据
Logstash not receiving data from kafka running inside docker(compose) using port other than 9092
我想将 kafka 与 elk stack 一起使用,其中 filebeat 从文件中读取日志并将数据发送到 kafka,然后再将其发送到 logstash。我正在 运行ning kafka 使用 docker-compose 文件。
我设法 运行 通过使用 kafka 的默认端口 9092,但问题是我的组织已经 运行 在端口 9092 上设置了一些其他服务。所以我在中使用了 9095我的 docker-compose 主机和容器内的 9092。
当我尝试将 filebeat 和 logstash 与 kafka 一起使用时,数据没有到达 logstash。我可以看到 logstash 订阅了我创建的主题,但即使我从控制台生产者发送消息,它也没有获取任何数据。但是当我使用 console-producer 和 console-consumer 时,它工作正常。但它不适用于 运行 容器外的 logstash 和 filebeat。
这是我的 docker-kafka 撰写文件:
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 是我的主机地址(public 我机器的 IP),172.18.0.3 是 docker 容器 运行ning kafka 的地址。
这是我的 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"
我不知道这条管道有什么问题。我想 运行 这个 docker-compose 在主机上的端口 9095(或除 9092 以外的任何其他端口)上。帮助将不胜感激。
您仍在将主机上的 9095 映射到通告的 INSIDE
侦听器
您应该使用 9095:9095
映射到 OUTSIDE
侦听器,如果这是其他客户端将连接的
我想将 kafka 与 elk stack 一起使用,其中 filebeat 从文件中读取日志并将数据发送到 kafka,然后再将其发送到 logstash。我正在 运行ning kafka 使用 docker-compose 文件。
我设法 运行 通过使用 kafka 的默认端口 9092,但问题是我的组织已经 运行 在端口 9092 上设置了一些其他服务。所以我在中使用了 9095我的 docker-compose 主机和容器内的 9092。
当我尝试将 filebeat 和 logstash 与 kafka 一起使用时,数据没有到达 logstash。我可以看到 logstash 订阅了我创建的主题,但即使我从控制台生产者发送消息,它也没有获取任何数据。但是当我使用 console-producer 和 console-consumer 时,它工作正常。但它不适用于 运行 容器外的 logstash 和 filebeat。
这是我的 docker-kafka 撰写文件:
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 是我的主机地址(public 我机器的 IP),172.18.0.3 是 docker 容器 运行ning kafka 的地址。 这是我的 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"
我不知道这条管道有什么问题。我想 运行 这个 docker-compose 在主机上的端口 9095(或除 9092 以外的任何其他端口)上。帮助将不胜感激。
您仍在将主机上的 9095 映射到通告的 INSIDE
侦听器
您应该使用 9095:9095
映射到 OUTSIDE
侦听器,如果这是其他客户端将连接的