현대의 서비스 운영에서 로그(Log)는 단순한 텍스트 기록을 넘어, 시스템의 상태를 알려주고 문제를 진단하며, 나아가 비즈니스 인사이트까지 제공하는 핵심 데이터로 자리 잡고 있습니다.
하지만 로그가 많아질수록 이를 효과적으로 수집·저장·검색·시각화하는 도구가 필요합니다.
대표적으로 많이 사용되는 것이 바로 Loki와 ELK Stack입니다.
이번 글에서는 두 시스템의 철학과 동작 방식을 비교하고, 실제 어떤 상황에서 각각을 활용하면 좋은지 정리해보겠습니다.
Loki는 Grafana Labs에서 만든 로그 집계 시스템으로, Prometheus에서 영감을 받아 개발되었습니다.
Prometheus가 메트릭을 수집하고 시계열 데이터를 관리하는 것처럼, Loki는 로그를 효율적으로 저장하고 메타데이터(label) 기반으로 검색하는 것을 목표로 합니다.
라벨 기반 인덱싱
로그의 전체 내용을 인덱싱하지 않고, 서비스명·Pod명·네임스페이스 같은 “라벨(label)”만 인덱싱합니다.
→ 저장 비용이 크게 줄고, 운영이 가벼워집니다.
Grafana 통합
Loki는 Grafana와 긴밀하게 연동됩니다. 따라서 메트릭 + 로그 + 트레이스를 한 화면에서 확인할 수 있어 DevOps에 최적화됩니다.
구성요소
- Promtail: 로그 수집기 (파일, 컨테이너 로그를 읽어 Loki로 전송)
- Loki: 로그 저장 및 검색 엔진
- Grafana: 로그 시각화 및 대시보드
즉, Loki는 “운영자 관점에서 빠르고 가볍게 로그를 확인하고 싶은 경우” 강력한 선택지가 됩니다.
Loki를 이해할 때 꼭 같이 알아야 하는 구성요소가 있습니다. 바로 Promtail입니다.
Promtail은 Loki에 로그를 보내는 역할을 하는 로그 수집 에이전트(Log Collector) 입니다.
로그 수집 (Collect)
서버의 로그 파일(/var/log/, 컨테이너 stdout 등)을 읽어옵니다.
로그 전처리 (Process)
불필요한 로그를 걸러내거나, 라벨(Label)을 붙여서 나중에 Loki에서 효율적으로 검색할 수 있도록 가공합니다.
로그 전송 (Push)
정리된 로그를 Loki 서버로 전송합니다.
즉, Promtail은 “로그 수집기 → 파서 → Loki 전송기”의 역할을 모두 담당합니다.
Promtail은 크게 세 단계로 동작합니다.
로그를 어디서 읽어올지 결정
예: /var/log/syslog, docker container logs, k8s pod logs
수집한 로그를 정규식/파서로 가공
라벨을 붙여 Loki에 검색이 쉽게 만듦
예:
pipeline_stages:
- regex:
expression: "level=(?P<level>\\w+)"
- labels:
level:
→ 로그 안에서 level=ERROR 같은 값을 찾아 level="ERROR" 라벨로 저장
ELK는 Elasticsearch, Logstash, Kibana 세 가지 오픈소스 프로젝트를 묶어 부르는 이름입니다.
최근에는 Beats까지 포함하면서 Elastic Stack이라고도 부릅니다.
즉, ELK는 “로그 수집 → 저장/검색 → 시각화”의 전체 과정을 담당하는 엔드 투 엔드 로그 분석 플랫폼이라고 할 수 있습니다.
기능: 검색과 분석의 핵심 엔진
데이터가 JSON 형태로 저장되며, 모든 필드가 자동으로 인덱싱됨 → 빠른 전문(full-text) 검색 가능
단순 로그 검색뿐 아니라, 집계(aggregation), 통계 분석도 수행 가능
분산 아키텍처 기반으로 수십억 건의 로그도 빠르게 처리 가능
기능: 로그 수집기 + 파서(Parser)
다양한 입력 소스 지원 (파일, 데이터베이스, 메시지큐, API 등)
로그를 가공하는 필터(filter) 기능 지원
예: Apache 로그를 파싱해서 IP, URL, 응답코드 등 필드 분리
출력(output)을 통해 Elasticsearch, Kafka, S3 등 다양한 대상으로 전달
기능: Elasticsearch의 데이터를 시각화
로그 검색, 대시보드 구성, 알람 설정 가능
보안 관제, 운영 모니터링, 비즈니스 인사이트 분석에 활용
강력한 검색: 전체 로그 본문(full-text)을 인덱싱 → 특정 키워드, 패턴, 정규식까지 검색 가능
확장성: Elasticsearch는 분산 시스템이라 데이터가 수십억 건 이상이어도 처리 가능
다양한 파이프라인: Logstash/Beats로 여러 소스에서 로그를 수집 가능
시각화: Kibana로 대시보드를 만들어 운영/보안팀과 공유 가능
리소스 소모: 인덱스를 많이 만들기 때문에 CPU, 메모리, 디스크 소모가 크다
운영 복잡도: Elasticsearch 클러스터 관리, 샤드 분배, 인덱스 최적화 등을 신경 써야 한다
비용 문제: 대규모 로그 보관 시 저장 공간 비용이 빠르게 증가
| 구분 | ELK | Loki |
|---|---|---|
| 목적 | 로그 분석 & 검색 | 로그 모니터링 & 디버깅 |
| 인덱싱 | 전체 로그 본문 인덱싱 | 라벨만 인덱싱 |
| 장점 | 강력한 검색, 보안·분석 활용 | 가볍고 비용 효율적 |
| 단점 | 무겁고 운영 복잡 | 전문 검색 한계 |
| 주요 활용 | 보안 관제, 비즈니스 분석, 장기 보관 | MSA 운영, Kubernetes 로그 관제 |
로그는 단순한 시스템 기록이 아니라, 운영 안정성 확보, 문제 진단, 보안 분석, 비즈니스 개선까지 이어지는 중요한 자산입니다.
하지만 서비스 규모, 요구사항, 비용 제약에 따라 선택해야 할 도구는 달라집니다.
Loki + Promtail
→ Kubernetes, MSA 환경에서 빠르고 가볍게 로그를 모니터링/디버깅하고 싶을 때 최적
→ Grafana와 결합해 메트릭, 로그, 트레이스를 한 화면에서 보며 DevOps 효율성 극대화
ELK Stack
→ 보안 관제, 장기 로그 분석, 비즈니스 인사이트 추출이 필요한 경우 강력한 플랫폼
→ 로그를 데이터베이스처럼 다루며, 복잡한 쿼리와 대규모 데이터 분석까지 가능