Docker Compose로 EFK(Elasticsearch, Fluentd, Kibana) 스택을 구성하는 방법
EFK 스택은 로그 수집 → 저장 → 분석 → 시각화를 위한 대표적인 오픈소스 조합입니다.
- Elasticsearch → 로그 저장 및 검색
- Fluentd → 로그 수집 및 전달
- Kibana → 로그 시각화 및 분석
프로젝트 구조 준비
mkdir -p efk-stack/fluentd/conf
cd efk-stack
efk-stack/
├── docker-compose.yml
└── fluentd/
└── conf/
└── fluent.conf
1. Docker Compose 파일 생성
프로젝트 디렉토리에 docker-compose.yml 파일을 생성합니다.
vim docker-compose.yml
2. Docker Compose 구성
docker-compose.yml 파일에 Elasticsearch, Fluentd 및 Kibana 서비스를 정의합니다.
version: '3.9'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0
environment:
- discovery.type=single-node
ports:
- "9200:9200"
networks:
- efk-network
fluentd:
image: fluent/fluentd:v1.14-1
volumes:
- ./fluentd/conf:/fluentd/etc
environment:
- FLUENTD_CONF=fluent.conf
- ELASTICSEARCH_HOST=elasticsearch
- ELASTICSEARCH_PORT=9200
links:
- elasticsearch
networks:
- efk-network
kibana:
image: docker.elastic.co/kibana/kibana:7.14.0
ports:
- "5601:5601"
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
links:
- elasticsearch
networks:
- efk-network
networks:
efk-network:
driver: bridge
3. Fluentd 설정 파일 작성
프로젝트 디렉토리에 fluentd 디렉토리를 생성하고 그 안에 fluent.conf 파일을 작성합니다.
vim fluentd/conf/fluent.conf
<source>
@type forward
port 24224
bind 0.0.0.0
</source>
<match **>
@type elasticsearch
host elasticsearch
port 9200
logstash_format true
logstash_prefix fluentd
logstash_dateformat %Y%m%d
include_tag_key true
type_name access_log
</match>
주요 포인트
- logstash_format true → Kibana에서 바로 사용 가능
- index: fluentd-YYYYMMDD
4. Docker Compose 실행
터미널에서 프로젝트 디렉토리로 이동한 후 아래 명령을 실행하여 Docker Compose를 실행합니다.
docker-compose up -d
확인
docker-compose ps
5. Elasticsearch 확인
curl http://localhost:9200
{
"cluster_name": "docker-cluster",
"tagline": "You Know, for Search"
}
6. Kibana 접속
웹 브라우저에서 http://localhost:5601에 접속하여 Kibana 대시보드를 사용하여 로그를 시각화하고 분석합니다.
http://efk-stack:5601

7. Elasticsearch 8.x 토큰 기반 인증
Kibana Enrollment Token 생성
docker-compose exec elasticsearch bin/elasticsearch-create-enrollment-token -s kibana
docker-compose exec elasticsearch bash
bin/elasticsearch-create-enrollment-token --scope kibana
elasticsearch@6fa025e294cd:~$ bin/elasticsearch-create-enrollment-token --scope kibana
WARNING: Owner of file [/usr/share/elasticsearch/config/users] used to be [root], but now is [elasticsearch]
WARNING: Owner of file [/usr/share/elasticsearch/config/users_roles] used to be [root], but now is [elasticsearch]
eyJ2ZXIiOiI4LjEuMyIsImFkciI6WyIxNzIuMjIuMC4yOjkyMDAiXSwiZmdyIjoiZGY2ODI4MTAyZmU3ZTMwNDVlNDViNmE0YWJhMDBlMzg1NjFhMWIxYWE4NTU3YmQ5MTI4MDYxNWUyOWNmMmFiOCIsImtleSI6IjVVU21qSUFCb0lWaHgxbDJUNG9sOi0tSDdtdjlIUUNTMlR1cEx0VVZMV1EifQ==


Kibana Verification Code
docker-compose exec kibana bin/kibana-verification-code
docker-compose exec kibana bash
bin/kibana-verification-code
kibana@b299b7a363e8:~$ bin/kibana-verification-code
Your verification code is: 001 189



위의 단계를 따라 Docker Compose를 사용하여 EFK 스택을 구성할 수 있습니다. Elasticsearch, Fluentd 및 Kibana가 함께 실행되며 로그 수집, 분석 및 시각화를 위한 환경이 구성됩니다.
'리눅스' 카테고리의 다른 글
| [WIP] Elasticsearch 클러스터의 상태를 점검하고 모니터링하는 방법 (0) | 2026.03.21 |
|---|---|
| [WIP] 우분투에서 Elasticsearch와 Kibana를 설치 및 클러스터을 구성하고 상태를 확인하는 방법 (0) | 2026.03.20 |
| [WIP] 우분투에서 Elasticsearch 8 설치 및 클러스터 구성 방법 (0) | 2026.03.20 |
| [WIP] Docker iptables 설정 오류 및 네트워크 통신 불가 문제 해결 (0) | 2026.03.18 |
| [WIP] 리눅스에서 auditd(감사)를 설치하고 사용하는 방법 (0) | 2026.03.17 |