Backend

[Backend] Grafana Loki

아몬드맛빼빼로 2025. 3. 6. 17:21
반응형

Loki?

Grafana Labs에서 개발한 로그 데이터 집계 시스템으로 Prometheus의 메트릭 수집과 유사하게 로그 데이터를 수집/저장하며 Grafana와 통합을 통하여 강력한 시각화와 분석을 제공한다.분산 시스템을 상정하고 설계되어 기본적으로 수평 확장이 가능하며 대규모 로그 데이터를 처리할 수 있다.

효율적인 저장방식

Loki는 로그 데이터 전체가 아니라 Metadata만 인덱싱하는 방식을 가져간다.

이런 식으로 전체 데이터를 인덱싱하는게 아니라 일부분만 인덱싱하는 방식은 다른 솔루션보다 적은 저장 공간이 필요함을 의미한다.

 

또한,데이터를 라벨링하여 필요한 로그를 빠르게 찾을 수 있도록 정리한다.

Loki의 동작

Loki는 위해 만들어진 Promtail을 통하여 로그를 가져와 저장한다.Grafana에서 LogQL이라는 쿼리 언어를 통하여 로그를 검색하게 되며 규칙을 설정하여 Prometheus AlertManager로 경고를 발송할 수도 있다.

더보기

Promtail

Grafana Loki와 함께 사용되는 로그 수집기 툴이다.

  • Distributor - 클라이언트로부터 수신한 데이터를 검증한 후 Ingester에 전달하는 역할을 담당
  • Ingester - 로그 데이터를 메모리에 압축하여 Chunks 저장하고 일정 시간 후 장기 저장소 역할의 백엔드(S3, Cassandra 등)로 전송/기록 하는 역할을 담당
  • Querier - Ingester의 인메모리 데이터를 쿼리 후 장기 저장소에서 쿼리 로그를 가져와 Query-Frontend에 데이터를 반환 하는 역할이며 Ingester에서 중복된 데이터를 가져올 수도 있기 때문에 내부적으로 중복을 제거-
  • Query-Frontend - 실제 쿼리 실행에 필요한 Querier의 역할을 보조하며 내부적으로 쿼리를 조정하고 큐에 보관해주는 기능을 담당
  • Compactor - Chunk 보관주기를 관리하고 테이블을 단일 인덱스 파일로 압축하는 기능을 담당
  • Ruler - 사용자가 정의한 규칙 기반으로 경고를 발생시키는 등 로그 데이터에 대한 경고를 관리하는 기능을 담당

WAL

Write Ahead Log의 약자로 예기치 않은 장애 상황을 방지해주는 장치이다.

  1. 데이터가 Ingesters로 들어오면 해당 데이터를 메모리에 적재하고 WAL에 기록한다(WAL은 로컬 파일 시스템을 사용한다)
  2. 예기치 않은 장애로 프로세스가 중단되거나 하면서 메모리의 데이터가 소실된다
  3. 프로세스가 복구되면 WAL에 저장된 데이터를 읽어와 메모리에 적재하여 장애 전으로 복구한다

loki-logback-appender

loki-logback-appender는 Logback을 이용하여 로그 데이터를 Grafana Loki에 전송할 수 있도록 도와주는 라이브러리이다.

더보기

Logback

Java의 로깅 라이브러리 중 하나

'Backend' 카테고리의 다른 글

[Backend] CloudWatch 이론  (0) 2025.04.29
[Backend] Feign  (0) 2025.03.26
[Backend] gRPC  (1) 2025.02.28
[Backend] MySQL에서 한글 검색을...?  (0) 2025.02.06
[Backend] Elasticsearch  (0) 2024.12.23