개요
로그는 어떻게 수집해야할까?
나는 최근까지 로그 수집에 대한 지식도, 관심도 가져 본적이 없었다. 그 이유는 개발만 하면서 로그 대한 필요성도 크게 느끼지 못했고, 익숙하지 않은것도 있지만 실제로 로그를 효과적으로 관리하여 얻는 큰 장점을 경험해본적이 없기에 표면으로 다가오는 이점을 깨닫지 못했다. 개발 과정이야 소수의 팀원들끼리 지지고 볶고, 그러다보면 해결이 되었다.
그러다 최근에 정식 출시전 알파 테스트를 진행하였는데, 그 과정에서 무수히 많은 이슈가 발생하였다. 현재 우리 서비스는 로깅 정책이나 수집에 대한 시스템을 전혀 고려하지 않았기에 이슈가 발생한 원인이나 트리거, 요청이 제대로 들어왔는지, 어떤 메소드에서 오류가 발생하였는지 등을 찾는데 많은 어려움이 있었다. 물론 정식 출시전 큰 이슈들을 발견하기 위해서 진행한 알파 테스트이지만 버그 발생의 원인이 추적이 안되니 너무 답답하였다.
고작 6명 정도가 앱을 사용하는데 벌써 이슈를 발견하기 힘들다면 실제 운영 환경에서는 시스템을 안정적으로 운영할 수 있을까?
만약 로그 시스템을 구축하여, 로그 수집 기술을 적용한다면 시스템에 이슈가 발생하더라도 로그를 빠르게 분석함으로써 발빠르게 대응할 수 있을 것이다. 그렇기에 로그 시스템의 구축이 필요하다고 느껴졌고, 그중에서도 꽤나 트렌디하고 많이 사용되는 ELK Stack과 PLG Stack 에 대해서 알아보는 시간을 가져보고자 한다.
ELK Stack 이란?
📌 구성
Elasticsearch : 로그 저장 및 검색
Logstash : 로그 수집 및 데이터 입출력 변환
Kibana : 로그 시각화 및 관리
ELK Stack이란 이 3가지 기술들의 맨 앞 이니셜을 합쳐 만든 말이다. (최근에는 Logstash 의 오버헤드가 크다는 점을 고려하여 데이터 수집만을 담당하는 경량화된 모듈 FileBeat를 같이 사용한다.)
- Elasticsearch
- 실시간 분산형 검색 엔진
- 데이터 검색 및 분석을 위해 주로 사용되고 대규모 데이터를 저장하고 실시간으로 검색 가능
- Logstash
- 다양한 소스에서 데이터를 수집하고, 변환
- 다른 저장소에 전달하는 데이터 처리 파이프 라인 도구
- 로그 파일, 메트릭 등 다양한 소스에서 데이터를 수집하고, 필터링 및 정규화 가능
- Kibana
- Elasticsearch에서 저장된 데이터를 시각화하고 분석하는데 사용
- 대시보드, 차트, 그래프 및 지도를 생성하여 데이터를 탐색하고 시각적으로 표현 가능
- Elasticsearch와 연동하여 거의 실시간으로 데이터를 시각화 가능
📌 작동 원리
FileBeat
를 통해 Logstash
로 로그를 전달한뒤,Logstash
에서 데이터를 수집 및 변환한 뒤 ElasticSearch
로 전달한다. ElasticSearch
에서는 데이터를 인덱싱하고, 검색하는 기능을 제공하며, Kibana
를 통해 데이터의 분석 결과를 시각화하여 일련의 프로세스를 스택화한 것이 ELK Stack
이다.
📌 성능 및 효율성
- 장점
- 강력한 색인화 기능으로 복잡한 쿼리와 데이터 검색이 가능하다.
- 고급 분석 및 대용량 데이터 처리에 적합하다.
- 단점
- 색인화로 인해 저장 공간과 자원 소비가 크며, 운영 비용이 높다.
- 관리 복잡도가 높다.
PLG Stack 이란?
📌 구성
PromTail: 로그 수집 및 전달
Loki : 로그 저장 및 조회
Grafana : 로그 시각화 및 대시보드 제공
PLG Stack은 위 3가지 기술들의 맨 앞 이니셜을 합쳐 만든 말이다. 최근 들어 로그 모니터링 분야에서 인기를 얻고 있는 툴 모음이다.
- Promtail
- 오픈 소스 로그 수집기
- 수집한 로그 데이터를 처리하고 Loki에 전달하는 기능
- 레이블과 메타데이터와 함께 저장
- 경량화되어 자원 소비가 적음
- Loki
- 로그 데이터를 검색하고 분석
- 쿼리 언어를 통해 로그 데이터를 검색 및 분석 가능
- Grafana
- 오픈 소스 대시보드 및 시각화 플랫폼
- Loki 에 저장된 로그 데이터를 대시보드와 시각화로 표현
작동 원리
여러 로그들을 Promtail 을 통해 읽어 Loki 로 전달한다. Loki 는 수집된 로그 데이터를 저장하고, 메터 데이터를 기반으로 검색 및 쿼리를 처리한다. 그리고 Grafana 를 통해 Loki 에 저장된 로그 데이터를 시각화 하는 일련의 프로세스를 스택화 한것이 PLG Stack 이라고 한다.
📌 성능 및 효율성
- 장점
- 색인화를 생략하여 저장 공간과 자원 소비가 적다.
- 가볍고 단순한 설계로 설치와 운영이 쉽다.
- 모니터링 도구와 통합이 가능하다.
- 단점
- 복잡한 검색이나 색인화가 필요한 경우에 적합하다.
- 데이터가 많을수록 메타 데이터 관리가 어렵다.
어떤걸 도입해야 할까?
ELK Stack과 PLG Stack에 대해서 간략하게 알아보았다. 그래서 현재 로그 시스템을 구축해야한다면 어떤걸 선택해야할까? 사실 마음 같아서는 둘다 해보고 싶다. 이러쿵 저러쿵 특징을 분석하고, 장단점을 따져도 결국 직접 써봐야 피부에 와닿기 때문이다. 하지만.. 스프린트 기간은 정해져있고, 서버 비용도 한정적이기때문에 현실적으로 잘 선택해야한다.
현재 우리 서버는 이미 구축된 서버가 많아 서버 비용이 녹녹치 않은 상태다. 그렇기에 추가적인 서버나 리소스가 최소한이어야 한다. 이러한 조건속에서 ELK 를 선택하기에는 다소 무리가 있다.
왜냐하면 ELK Stack 는 Elasticsearch 를 사용한는데 Elasticsearch 는 상당한 메모리와 CPU 자원을 필요로 하기 때문이다. 그에반해 PLG Stack 은 다소 적은 리소스를 요구하기에 PLG Stack 를 로깅 시스템으로 구축하고, 현재 서비스에 적용해보고자 한다.
'DevOps > Monitoring' 카테고리의 다른 글
스프링 모니터링 시스템 구축하기 (Actuator, Prometheus, Grafana) (0) | 2025.02.05 |
---|---|
PLG Stack(Promtail, Loki, Grafana)으로 효과적인 로그 모니터링 시스템 구축하기 (0) | 2025.01.29 |