Loki 간단 정리

Loki 간단 정리

Created
Mar 20, 2024 07:48 AM
Tags
loki
lgtm
notion image
 
로그적재시스템은 low-read, high-write 환경이다. 로그는 1초에도 엄창난 량이 적재되지만, 실제 로그를 조회하는 행위는 빈번하지 않다. 경우에 따라서는 장애나 버그가 발생하지 않고서는 조회될 일이 없기도 하다.

기존 ELK 스택의 단점

ELK 스택을 사용하며 서비스가 확장되다 보면 인덱스 부하가 필연적으로 발생한다. 비용이 증가하고, 운영 부담도 커진다. 스케일링을 위해서는 인덱스와 샤드를 옮기는 작업을 해야하고, 볼륨이 커질수록 많은 시간이 소요된다.
 
볼륨에 저장하는 로그 기간을 줄이고 S3로 저장하다 보면 조회방법이 파편화되기도 한다.
 
전반적으로 ElasticSearch는 높은 비용과 대규모 클러스터 확장이 곤란한 문제를 가지고 있다.
 
요즘 우아한형제들이나 넥슨 등 회사들이 관심을 가지는 스택이 LGTM이다. LGTM은 ELK의 단점을 어느정도 해소한다.
 
오늘은 LGTM의 “L”을 맡고 있는 Loki를 정리해본다.
 

Loki의 장점

Loki는 로그에 대한 메타데이터만 인덱싱한다. 즉, 로그 자체의 내용들을 인덱싱하는 것이 아니라 레이블 세트를 인덱싱한다. 실제 로그는 압축되어 저장된다.
 
따라서 실제 조회시에는 메타데이터로 매칭된 레이블과 이에 매칭되는 압축 로그 데이터를 가져와 사용자에게 보여주게 된다.
 

Loki 소개

Loki는 수평확장 가능한 고가용성의 멀티 테넌트 로그 수집 시스템이다.
Prometheus와 유사하지만 메트릭이 아닌 로그를 대상으로 한다는 점, Pull 방식이 아니라 Push 방식으로 동작한다는 점이 차이가 있다.
 
  • 로그의 내용을 인덱싱하지 않고 메타데이터만 인덱싱한다.
  • 실제 로그는 압축되어 S3 같은 스토리지에 저장된다.
  • 작은 인덱스와 높은 압축률로 압축된 로그는 운영에 소요되는 작업과 비용을 크게 줄인다.
 

Loki 기반의 로깅 시스템

  • Agent: Promtail과 같은 로그 포워더
  • Loki: 로그의 수집과 인덱싱, 저장, 쿼리를 지원하는 메인 서버
  • Grafana: 쿼리와 visualization 툴
 
 

Loki의 특징

  • Scalability read와 write를 분리해 스케일 할 수 있다.
  • Multi-tenancy
  • 효율적인 Storage
    • 압축된 로그 데이터
    • 메타데이터(레이블)만 인덱싱하기 때문에 더 작은 인덱스
    • S3 등 object-storage의 사용
  • Alerting
 

Labels

key value pair 형태로 된 모든 데이터. Loki에서는 log stream의 메타데이터를 지칭할 때 사용하는 단어이다.
 

우아한형제들 LGTM 스택 도입 후 성과

  • 로그 수집량은 1.6배 증가하였으나, 비용은 23% 절감
  • 로그 유입이 증가하더라도 유연하고 빠르게 확장 가능
 
 

참고자료