이번에는 Elasticsearch, Logstash, Kibana(ELK 스택)를 활용해
로그를 수집·검색·시각화하는 엔드투엔드 파이프라인을 단계별로 구성해보겠습니다.
Filebeat를 이용해 애플리케이션 로그를 수집하고, Logstash에서 변환한 뒤 Elasticsearch에 저장,
Kibana에서 대시보드를 구축하는 과정을 다룹니다.
⸻
📋 목차
1. ELK 스택 개요
2. 환경 준비
3. Elasticsearch 설치 & 기본 설정
4. Logstash 설치 & 파이프라인 구성
5. Filebeat 설치 & 로그 수집 설정
6. Kibana 설치 & 인덱스 패턴 생성
7. 대시보드 구축 예제
8. 실전 팁 & 주의사항
9. 마무리
⸻
1️⃣ ELK 스택 개요
• Elasticsearch: 분산형 검색·분석 엔진
• Logstash: 다양한 소스로부터 로그 수집·변환·전송
• Kibana: Elasticsearch 데이터를 시각화하는 웹 UI
• Filebeat: 경량 로그 수집기(Agent)
이 구성으로 애플리케이션 → Filebeat → Logstash → Elasticsearch → Kibana
흐름의 통합 로그 플랫폼을 구축할 수 있습니다.
⸻
2️⃣ 환경 준비
• OS: Ubuntu 20.04 (예시)
• 메모리: 4GB 이상 권장
• Java: OpenJDK 11 (Elasticsearch·Logstash 필요)
sudo apt update
sudo apt install -y openjdk-11-jdk
java -version # 확인: openjdk version "11.x"
⸻
3️⃣ Elasticsearch 설치 & 기본 설정
# 1) 공식 GPG 키 및 저장소 등록
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt install -y apt-transport-https
echo "deb https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
sudo apt update
# 2) Elasticsearch 설치
sudo apt install -y elasticsearch
# 3) 설정 파일 수정 (/etc/elasticsearch/elasticsearch.yml)
sudo tee -a /etc/elasticsearch/elasticsearch.yml <<EOF
cluster.name: elk-cluster
network.host: 0.0.0.0
http.port: 9200
discovery.type: single-node
EOF
# 4) 서비스 시작
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
# 5) 동작 확인
curl http://localhost:9200/_cluster/health?pretty
⸻
4️⃣ Logstash 설치 & 파이프라인 구성
# 1) Logstash 설치
sudo apt install -y logstash
# 2) 파이프라인 설정 파일 작성 (/etc/logstash/conf.d/logstash.conf)
sudo tee /etc/logstash/conf.d/logstash.conf <<'EOF'
input {
beats {
port => 5044
}
}
filter {
# 예: JSON 로그 파싱
json {
source => "message"
}
# 타임스탬프 변환
date {
match => ["timestamp", "ISO8601"]
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "app-logs-%{+YYYY.MM.dd}"
}
stdout { codec => rubydebug }
}
EOF
# 3) 서비스 시작
sudo systemctl enable logstash
sudo systemctl start logstash
# 4) 포트 확인 (5044)
sudo ss -tlpn | grep 5044
⸻
5️⃣ Filebeat 설치 & 로그 수집 설정
# 1) Filebeat 설치
sudo apt install -y filebeat
# 2) Filebeat 모듈 비활성화(옵션)
filebeat modules disable *
# 3) Filebeat 설정 파일 수정 (/etc/filebeat/filebeat.yml)
sudo tee /etc/filebeat/filebeat.yml <<'EOF'
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/myapp/*.log
output.logstash:
hosts: ["localhost:5044"]
EOF
# 4) 서비스 시작
sudo systemctl enable filebeat
sudo systemctl start filebeat
# 5) 로그 수집 확인
sudo tail -f /var/log/logstash/logstash-plain.log
⸻
6️⃣ Kibana 설치 & 인덱스 패턴 생성
# 1) Kibana 설치
sudo apt install -y kibana
# 2) 설정 파일 수정 (/etc/kibana/kibana.yml)
sudo tee -a /etc/kibana/kibana.yml <<EOF
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]
EOF
# 3) 서비스 시작
sudo systemctl enable kibana
sudo systemctl start kibana
# 4) 웹 UI 접속
# 브라우저 → http://localhost:5601
• 인덱스 패턴: app-logs-* 지정 → Discover 탭에서 샘플 로그 확인
⸻
7️⃣ 대시보드 구축 예제
1. Discover 탭에서 @timestamp, message 등 필드 구조 파악
2. Visualize Library →
• Line chart: 시간별 로그 수 추이
• X축: @timestamp(Date Histogram)
• Y축: Count
• Data Table: 최다 에러 메시지 상위 10개
• Bucket: Terms aggregation on level or error.keyword
3. Dashboard → 새 대시보드 생성 후 위 시각화 추가
4. Dashboard 저장 → 필요하면 시간 필터·쿼리 템플릿 설정
⸻
8️⃣ 실전 팁 & 주의사항
• 보안
• Elasticsearch·Kibana 인증 활성화(X-Pack)
• HTTPS 통신 설정
• 성능
• 인덱스 수명 관리(Index Lifecycle Management)로 디스크 절약
• 샤드·레플리카 수 튜닝
• 확장성
• Logstash 병렬 파이프라인 구성(pipeline.workers)
• Filebeat → Logstash → Elasticsearch 클러스터링
• 모니터링
• Metricbeat ⋅ Elastic Stack 모니터링 모듈 활용
• Grafana+Prometheus로 클러스터 상태 시각화
⸻
🔚 마무리
ELK 스택을 통해 애플리케이션 로그를 실시간으로 수집·저장·검색하고,
Kibana로 대시보드를 구성하는 전체 파이프라인을 완성했습니다.
위 예제와 팁을 참고해 여러분 서비스의 운영 가시성을 높여보세요!
'IT & Tech 정보' 카테고리의 다른 글
🚀 gRPC 서버·클라이언트 구현: Go + Protocol Buffers (0) | 2025.05.25 |
---|---|
🚀 OAuth 2.0 인증 서버 구축: Node.js + OAuth2orize (0) | 2025.05.25 |
🚀 WebSocket 기반 실시간 채팅 서버: Socket.IO + React (0) | 2025.05.25 |
🚀 GitHub Actions로 CI/CD 파이프라인 구성 (0) | 2025.05.25 |
🚀 AWS Lambda + API Gateway 서버리스 애플리케이션 구현 (0) | 2025.05.25 |