시스템 요구사항
- 메모리: ES 힙 1GB + Kibana → Docker에 4GB 이상 할당 권장(16GB 노트북 OK)
- 디스크: 10GB 이상 여유 (ELK 패키지 설치 용량이 큽니다)
- 포트: 9200(Elasticsearch), 5601(Kibana), 5044(Logstash) - 다른 프로그램이 쓰고 있지 않은지 확인
- 네트워크: Elastic 공식 저장소에서 패키지를 내려받습니다(사내망에서 막혀 있으면 네트워크 담당자에게 문의)
서버 띄우기
VS Code에서 실습 폴더를 열고 통합 터미널(Ctrl+`)에서:
cd handson/elk
docker compose up -d --build # 빈 리눅스 서버 기동
docker compose exec elk bash # 서버 접속 - 설치는 여기서부터
이 서버에는 ELK가 들어 있지 않습니다. 설치 절차는 Elasticsearch 설치 글 를 따릅니다.
handson/폴더 전체가 서버의/labs로 연결돼 있습니다. 내 PC에서 파일을 고치면 서버에 바로 반영됩니다.- 설치가 끝나면 Kibana 접속:
http://127.0.0.1:5601→ Discover → 데이터 뷰logs-*생성(시간 필드@timestamp).
샘플 데이터의 타임스탬프가 과거 날짜입니다. Discover 시간 범위를 그 날짜가 포함되도록 넓혀야 보입니다.
매일 시작·종료
| 상황 | 명령 |
|---|---|
| 오늘 실습 종료 | docker compose stop - 설치·데이터 유지 |
| 다음 날 시작 | docker compose start → 접속 후 ES·Kibana 다시 기동 |
| 설치 상태 백업 | docker commit elk-lab-vm elk-lab:installed |
| 서버 폐기 | docker compose down - 설치한 ELK가 전부 사라집니다 |
과정 중에는 down 을 쓰지 않습니다. 마지막 날 정리할 때만 씁니다.
서버를 다시 켠 뒤 ES·Kibana를 올리는 명령(Elasticsearch 설치 글의 기동 절):
sudo -u elasticsearch env ES_PATH_CONF=/etc/elasticsearch \
/usr/share/elasticsearch/bin/elasticsearch -d -p /tmp/es.pid > /dev/null 2>&1
sudo -u kibana env KBN_PATH_CONF=/etc/kibana \
nohup /usr/share/kibana/bin/kibana > /tmp/kibana-start.log 2>&1 &
자주 하는 문제
| 증상 | 해결 |
|---|---|
apt-get update 가 NO_PUBKEY |
서명 키를 키링에 넣고 signed-by 로 지정했는지 확인 |
| ES 기동 실패(설정) | Duplicate field 면 자동 보안 블록을 지우지 않은 것 - 설치 실패 사례 글의 케이스 2 |
| ES 기동 중 종료(메모리) | 힙을 최소=최대 1GB로. Docker 메모리 할당 4GB 이상 |
failed to obtain node locks |
이미 떠 있는데 또 기동한 것. ps -ef | grep [e]lasticsearch 확인 |
| 내 PC에서 9200이 안 열림 | http.host: 0.0.0.0 설정과 compose 포트 매핑 확인 |
| Kibana 접속 지연 | ES가 green 된 뒤 1~3분 더 기다립니다 |
| Discover에 데이터 없음 | 시간 범위를 샘플 데이터 날짜가 포함되도록 넓힙니다. 데이터 뷰 시간 필드가 @timestamp 인지도 확인 |
| 다음 날 서비스 미기동 | 컨테이너를 start 해도 ES·Kibana는 자동으로 뜨지 않습니다(위 4절 명령) |
| 설치한 게 사라짐 | docker compose down 또는 compose 파일 수정 후 up 으로 컨테이너가 재생성된 것. elk-lab:installed 스냅샷으로 복구 |