Prometheus가 메트릭(Metric) 모니터링의 표준이라면, Loki는 그에 대응하는 로그(Log) 모니터링의 혁신적인 솔루션이다. Grafana Labs에서 개발한 Loki는 “Prometheus-like”한 설계를 바탕으로 로그 인덱싱 비용을 획기적으로 줄이면서도 강력한 검색 기능을 제공한다. 본 글에서는 Loki의 핵심 개념부터 Grafana와의 연동 방법, 그리고 효율적인 로그 조회를 위한 LogQL 기초까지 상세히 다룬다.
목차
- Loki의 철학과 아키텍처: 왜 Loki인가?
- Loki 설치 및 구성 요소(Promtail) 이해
- Grafana에서 Loki 데이터 소스 연결하기
- LogQL: 로그 분석을 위한 쿼리 언어 기초
- 대시보드 구성 및 메트릭화(Metrics from Logs)
- 결론: 메트릭과 로그의 결합 시너지
1. Loki의 철학과 아키텍처: 왜 Loki인가?
기존의 ELK(Elasticsearch, Logstash, Kibana) 스택은 강력하지만, 모든 로그 메시지를 인덱싱하기 때문에 스토리지 비용과 리소스 소모가 막대하다는 단점이 있다. 반면 Loki는 로그 본문 전체를 인덱싱하지 않고, 로그와 연관된 라벨(Label) 세트만을 인덱싱한다.
- 저비용 고효율: 인덱스 크기가 작아 오브젝트 스토리지(S3 등)를 활용한 저렴한 운영이 가능하다.
- Prometheus와의 일관성: Prometheus와 동일한 라벨 시스템을 사용하므로, 메트릭에서 확인한 라벨 그대로 로그를 즉시 추적할 수 있다.
- 클라우드 네이티브: 쿠버네티스 환경에서의 오토스케일링 및 멀티 테넌시 지원이 탁월하다.
2. Loki 설치 및 구성 요소(Promtail) 이해
Loki 시스템을 운영하기 위해서는 로그를 수집하는 ‘에이전트’가 반드시 필요하다. 가장 대표적인 것이 Promtail이다.
- Loki: 로그를 저장하고 쿼리를 처리하는 중앙 서버.
- Promtail: 각 서버나 컨테이너에서 로그 파일을 읽어와 라벨을 붙이고 Loki로 전송하는 에이전트.
- 동작 원리: Promtail이
/var/log/*.log파일을 감시하다가 새로운 줄이 추가되면 설정된 라벨(예: job, instance)과 함께 Loki API로 푸시한다.
3. Grafana에서 Loki 데이터 소스 연결하기
Loki와 Promtail이 정상적으로 실행 중이라면, 시각화를 위해 Grafana와 연결해야 한다.
- 데이터 소스 진입: Grafana 왼쪽 메뉴에서
Connections>Data Sources를 선택한다. - Loki 선택:
Add data source버튼을 누르고 ‘Loki’를 검색하여 선택한다. - URL 설정: Loki 서버의 주소를 입력한다. (예:
http://localhost:3100또는 쿠버네티스 내부 주소) - Save & Test: 하단의
Save & test를 클릭하여 ‘Data source connected’ 메시지가 뜨는지 확인한다.
이제 Explore 메뉴에서 데이터 소스를 Loki로 변경하면 실시간 로그 브라우징이 가능하다.
4. LogQL: 로그 분석을 위한 쿼리 언어 기초
Loki는 PromQL과 매우 유사한 LogQL을 사용한다. 로그를 필터링하고 분석하는 기본 문법은 다음과 같다.
- 로그 스트림 선택:
{job="syslog"}– 특정 라벨의 로그 전체 조회. - 텍스트 필터링:
{container="nginx"} |= "error"– ‘error’라는 단어가 포함된 로그만 추출. - 정규표현식 활용:
{app="api"} |~ "status=[45].."– 400번대 또는 500번대 에러 로그 검색. - 파싱(Parsing):
| json또는| logfmt를 사용하면 로그의 구조를 자동으로 파악하여 필드별로 분리해준다.
5. 대시보드 구성 및 메트릭화(Metrics from Logs)
Loki의 진가는 로그를 숫자로 변환하여 그래프로 그릴 때 나타난다. 이를 ‘로그 기반 메트릭’이라 한다.
- 에러 빈도 시각화:
sum(count_over_time({job="mysql"} |= "error" [5m]))쿼리를 사용하면 5분간 발생한 에러 횟수를 시계열 그래프(Time Series)로 표현할 수 있다. - 로그 패널 최적화: Grafana의
Logs패널을 사용하면 로그의 심각도(Level)에 따라 색상을 입히거나, 특정 단어를 강조(Highlight)하여 가독성을 높일 수 있다.
6. 결론: 메트릭과 로그의 결합 시너지
Loki를 Grafana와 연동하면 모니터링의 ‘관측 가능성(Observability)’이 완성된다. Prometheus 대시보드에서 CPU 사용량이 튀는 지점을 발견했을 때, 클릭 한 번으로 동일한 시간대의 Loki 로그로 전환하여 원인을 파악하는 ‘상관관계 분석’이 가능해지기 때문이다.
초기 설정이 다소 복잡할 수 있으나, 한 번 구축해두면 장애 대응 시간을 획기적으로 단축할 수 있는 만큼 Loki 연동은 현대적 인프라 관리의 필수 코스라 할 수 있다.