티스토리 뷰

인프라

Grafana/Loki를 알아보자

김도리개발자 2023. 9. 13. 16:50

정의

모든 애플리케이션과 인프라의 로그를 저장하고 쿼리하도록 설계된 로그 집계 시스템

개념 및 용어

Distributor

  • 수집되는 로그를 받아 로그의 정확성을 검증한 후 Ingester로 넘김

Ingester

  • 수집된 로그를 장기 저장소에 저장함 (S3 같은)
  • 로그 스트림이 메모리에 chunks 단위로 저장된 후, 일정 기간 뒤에 장기 저장소로 옮겨짐
  • 갑자기 Ingester가 터지면 장기 저장소에 옮겨지지 않은 데이터는 유실됨

Querier

  • Ingetster나 장기 저장소에서 가져온 로그 쿼리 데이터를 중복 제거하여 Query-Frontend나 Grafana에 뿌려줌
  • LogQL 쿼리 언어를 사용하여 쿼리를 처리 하고 수집기와 장기 스토리지 모두에서 로그를 가져옴

Chunk Store

  • 장기 저장소
  • Amazon DynamoDB, Google Bigtable, Apache Cassandra, Amazon S3, Google Cloud Storage

Query-Frontend

  • 일종의 프록시 서비스로 Grafana에서 요청을 수신하고 일부 유효성 검사 및 캐싱을 수행한 다음 쿼리를 Querier로 전달

동작 방식

  • Promtail을 사용하여 로그 수집
    • 로그 수집기인 Promtail로 로그를 수집하여 Loki에 전달
      • Distributor에서 로그의 정확성 검증 후 Ingester로 넘김
    • 로그에 레이블 지정, 변환 및 필터링을 위한 유사한 기능 포함됨
  • Loki에 로그 저장
    • 스트림으로 그룹화되고 레이블로 인덱싱
      • Ingester에서 수집된 로그 스트림을 chunks 단위로 저장 후 일정 기간 뒤 장기 저장소로 옮김
  • LogQL을 사용하여 로그 탐색
    • Querier에서 Ingetster나 장기 저장소(Chunk Store)로부터 가져온 로그 쿼리 데이터를 중복 제거하여 Query-Frontend나 Grafana에 뿌려줌
  • 로그에 대한 알림
    • 경고 규칙을 설정하면 Prometheus AlertManager로 보내도록 경고 전달

장점

  • 모든 형식을 기록
  • 빠른 쓰기
  • 작은 인덱스
  • 실행하는 것이 더 저렴함
  • 작동이 더 간단함
  • 빠른 쿼리
  • 동적 방식으로 로그를 자르고 쪼개기(유연함)

단점

  • 쿠버네티스와 사용하면 훨씬 시너지 좋음 (하지만 우리 회사는 쿠버네티스를 못씀)

레퍼런스 및 요약

Logging/Grafana Loki 아키텍처 구성

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함