에러 로그
User
[2024-03-08T06:52:19,437]
[WARN ]
[org.apache.kafka.clients.NetworkClient][main]
[f155bb9de90915a9c48733ef822fc063803f4a142888f711e13b6b2bfdeb7096]
[Consumer clientId=logstash-0, groupId=logstash]
Connection to node 1 (localhost/127.0.0.1:9092)
could not be established. Broker may not be available.
docker-compose.yml 파일의 설정을 살펴보면, Kafka 서비스에 대한 KAFKA_ADVERTISED_LISTENERS 설정이 중요한 역할을 합니다. 현재 설정된 내용은 Kafka 서비스가 내부적으로 kafka:29092에서 통신하고, 외부 호스트 OS에서는 localhost:9092를 통해 접근할 수 있도록 설정되어 있습니다. 이 설정은 가상 환경 내부에서 Kafka에 접근하는 서비스와 호스트 OS에서 Kafka에 접근하는 서비스 모두를 고려한 것입니다.
Logstash 설정에서는 KAFKA_BOOTSTRAP_SERVERS 환경 변수가 kafka:29092로 설정되어 있는데, 이는 Logstash가 동일한 Docker 네트워크 내에서 Kafka 서비스에 접근하기 위한 설정입니다.
그러나 Logstash가 localhost:9092에 접근하지 못하는 오류가 발생하고 있습니다. 이는 localhost가 Logstash 컨테이너의 관점에서 볼 때, 해당 컨테이너 자체를 가리키기 때문에 발생할 수 있는 문제입니다. 즉, Logstash는 자신의 localhost에서 Kafka 서버를 찾고 있지만, 실제 Kafka 서버는 다른 컨테이너(또는 가상 환경)에 위치해 있습니다.
시도
docker-compose.yml에서 logstash의 environment 설정을 추가함
logstash-oss:
image: opensearchproject/logstash-oss-with-opensearch-output-plugin:7.13.2
container_name: logstash-oss
volumes:
- /data/logstash/data:/usr/share/logstash/data
- /data/logstash/pipeline/logstash.conf:/usr/share/logstash/pipeline/logstash.conf
ports:
- 5044:5044
restart: always
environment:
- ES_HOST=opensearch
- KAFKA_BOOTSTRAP_SERVERS=kafka:29092
하지만 같은 에러가 발생함.
해결 방법
Logstash 환경 변수 변경: KAFKA_BOOTSTRAP_SERVERS 환경 변수를 localhost:9092에서 kafka:29092로 변경하여, Logstash가 Kafka 서버에 올바르게 접근하도록 합니다.
root@ubuntu-VirtualBox:/data/logstash/pipeline# ls
logstash.conf
logstash.conf 에서 input 설정의 kafka bootstrap_server port가 9092로 설정돼있었는데 29092로 변경함
input {
kafka {
codec => plain
bootstrap_servers => "kafka:29092"
group_id => "logstash"
topics => ["test_input"]
consumer_threads => 1
}
}