이 글에서 얻는 것
- ELK Stack의 구성 요소와 역할을 이해합니다.
- Filebeat로 로그를 수집하고 Elasticsearch에 저장합니다.
- Kibana로 로그를 시각화하고 분석합니다.
- 실전 로그 분석 대시보드를 구축할 수 있습니다.
1) ELK Stack 구성 요소
애플리케이션 → Filebeat → Logstash → Elasticsearch → Kibana
(로그 수집) (변환/필터) (저장/검색) (시각화)
각 컴포넌트 역할:
- Filebeat: 로그 파일 수집 (경량 Agent)
- Logstash: 로그 변환, 필터링, 파싱
- Elasticsearch: 로그 저장 및 검색
- Kibana: 로그 시각화 및 대시보드
2) Docker Compose로 ELK 구성
version: '3.8'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.11.0
environment:
- discovery.type=single-node
- xpack.security.enabled=false
- "ES_JAVA_OPTS=-Xms1g -Xmx1g"
ports:
- "9200:9200"
volumes:
- es-data:/usr/share/elasticsearch/data
logstash:
image: docker.elastic.co/logstash/logstash:8.11.0
volumes:
- ./logstash/pipeline:/usr/share/logstash/pipeline
ports:
- "5044:5044"
depends_on:
- elasticsearch
kibana:
image: docker.elastic.co/kibana/kibana:8.11.0
ports:
- "5601:5601"
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
depends_on:
- elasticsearch
filebeat:
image: docker.elastic.co/beats/filebeat:8.11.0
user: root
volumes:
- ./filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml
- /var/log:/var/log:ro
- /var/lib/docker/containers:/var/lib/docker/containers:ro
depends_on:
- logstash
volumes:
es-data:
3) Filebeat 설정
filebeat.yml:
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/myapp/*.log
json.keys_under_root: true
json.add_error_key: true
fields:
app: myapp
env: production
output.logstash:
hosts: ["logstash:5044"]
4) Logstash 파이프라인
logstash/pipeline/logstash.conf:
input {
beats {
port => 5044
}
}
filter {
# JSON 파싱
json {
source => "message"
}
# 날짜 파싱
date {
match => ["timestamp", "ISO8601"]
}
# Grok 패턴으로 로그 파싱
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level} %{GREEDYDATA:msg}" }
}
}
output {
elasticsearch {
hosts => ["elasticsearch:9200"]
index => "myapp-logs-%{+YYYY.MM.dd}"
}
}
5) Kibana에서 로그 분석
1. Index Pattern 생성:
Management → Index Patterns → Create
Pattern: myapp-logs-*
2. Discover에서 로그 검색:
- 시간 범위 선택
- 필터 추가 (level:ERROR)
- 검색어 입력
3. Visualizations 생성:
- Line chart: 시간별 로그 수
- Pie chart: 로그 레벨 분포
- Table: 상위 에러 메시지
4. Dashboard 구성:
- Visualization 조합
- 실시간 업데이트
요약
- ELK = Elasticsearch + Logstash + Kibana
- Filebeat로 로그 수집
- Logstash로 변환/필터링
- Kibana로 시각화 및 분석
다음 단계
- 로깅 전략:
/learning/deep-dive/deep-dive-logging-strategy/ - Elasticsearch:
/learning/deep-dive/deep-dive-elasticsearch-basics/
💬 댓글