척척학사 BE 서버의 로그 모니터링을 위해 그동안 ELK(Elasticsearch + Logstash + Kibana) 스택을 사용해왔다.
하지만 다음과 같은 고민이 생기기 시작했다:
그래서 가볍고 효율적인 대안인 Grafana Loki Stack을 도입했다.
ELK는 분명 강력했지만, 현실적인 한계가 존재했다:
Grafana Loki Stack은 로그 모니터링에 최적화된 경량 스택이다. 구성은 단순하다:
[Spring Boot] → [Promtail] → [Loki] → [Grafana]
비교 항목 | ELK Stack | Grafana Loki Stack |
---|---|---|
리소스 사용량 | 높음 ❌ | 낮음 ✅ |
설정 및 배포 난이도 | 복잡 ❌ | 간단 ✅ |
비용 효율성 | 낮음 ❌ | 높음 ✅ |
로그 분석 목적 | 충분 ✅ | 충분 ✅ |
운영 편의성 | 낮음 ❌ | 높음 ✅ |
우리 팀의 상황(단일 서버, 로그 중심 모니터링, 예산 민감)엔 Loki가 딱이었다.
logging:
pattern:
console: '{"timestamp":"%d{yyyy-MM-dd HH:mm:ss}","level":"%p","message":"%m"}'
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: http://loki:3100/loki/api/v1/push
scrape_configs:
- job_name: spring
static_configs:
- targets:
- localhost
labels:
job: spring
__path__: /app/logs/*.log
pipeline_stages:
- json:
expressions:
timestamp: '@timestamp'
level: level
thread: thread_name
logger: logger_name
message: message
패널 이름 | 설명 | 쿼리 예시 |
---|---|---|
전체 로그 수 | 시간에 따른 로그 발생량 트렌드 확인 | count_over_time({job="spring"}[1m]) |
에러 로그 수 | 에러 레벨 로그만 시간별 개수로 확인 | `count_over_time({job="spring"} |
에러 로그 상세 보기 | 최근 에러 로그 리스트 확인 (로그 테이블) | `{job="spring"} |
에러 로그 비율 (%) | 전체 로그 중 에러 로그 비율 | `rate({job="spring"} |
✅ Y축: logs/sec 또는 %
✅ Panel 유형: Time series, Logs, Stat 등 적절히 선택
~/monitoring/grafana/provisioning/dashboards/loki-dashboard.json
~/monitoring/grafana/provisioning/dashboards/spring-log-dashboard.json
# ~/monitoring/grafana/provisioning/dashboards/dashboards.yaml
apiVersion: 1
providers:
- name: default
orgId: 1
folder: Loki
type: file
updateIntervalSeconds: 10
options:
path: /var/lib/grafana/dashboards
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=admin
- GF_DASHBOARDS_DEFAULT_HOME_DASHBOARD_PATH=/var/lib/grafana/dashboards/spring-log-dashboard.json
grafana:
volumes:
- ../grafana/provisioning:/etc/grafana/provisioning
- ../grafana/dashboards:/var/lib/grafana/dashboards
이제는 Spring 로그 기반으로 에러 알림, 사용자 요청 추적, 성능 저하 분석을 가볍게 처리할 수 있게 됐다.
ELK는 여전히 강력한 도구이지만, 단일 Spring 서버에서 로그 중심 분석이 목적이라면
Grafana Loki Stack이 더 합리적인 선택일 수 있다.
이번 전환은 단순한 기술 변경이 아니라,
척척학사의 운영 환경에 맞는 현실적인 선택이었다.
기술을 선택할 땐 유행보다 현실을 먼저 보자!