ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Thanos란?
    모니터링 2024. 1. 20. 00:01

    개요

    Thanos라는 용어를 듣고 어떤 것인지 개념을 잡아보고자 합니다.

     

     

    Thanos란?

    Thanos란 여러개의 프로메테우스로부터 메트릭을 조합하여 Thanos에서 전체 프로메테우스의 메트릭을 볼 수 있게 해 주고 수집된 메트릭을 스토리지에 저장합니다.

     

    Thanos에 대해 잘 이해하기 위해서는 프로메테우스가 어떤것인지 어느 정도 알고 있어야 합니다.

    프로메테우스에 대해서 잘 모르신다면 "프로메테우스란 무엇인가?"  글을 보면 좋을 것 같습니다.

     

    프로메테우스의 문제

    프로메테우스는 클러스터링 구조를 지원하지 않아 2가지 문제를 지닙니다.

    • 확장성의 어려움
    • 가용성의 어려움

     

    프로메테우스는 메트릭을 로컬 디스크에 수집하여 보관하기 떄문에 저장소의 용량의 한계에 도달하면 오래된 데이터가 자동으로 삭제되어 일정 시간이 지난 데이터는 조회할 수 없습니다.

     

    디스크를 사서 붙이면 어느정도 해결되지만 결국 데이터양이 방대해지면 단일 인스턴스로는 감당되지 않는 문제가 생깁니다.

     

    https://owin2828.github.io/devlog/2020/03/13/etc-7.html

    이런 문제를 해결하기 위해서 Federation이라는 방법을 활용하여 Master-Slave 구조로 관리합니다.

     

     

    하지만 여전히 가용성에 문제가 발생합니다.

    기본적으로 하나의 서버로 기동되고 실행 중인 서버가 다운되거나 장애 및 재시작 등으로 공백이 생기면 그 기간 동안 메트릭을 수집할 수 없습니다.

     

    클러스터링 기능이 존재하지 않아 문제를 해결하기 위해서 인스턴스 2개를 띄우고 메트릭을 수집해야 합니다.

     

    https://owin2828.github.io/devlog/2020/03/13/etc-7.html

     

     

    Thanos란?

    Thanos는 프로메테우스의 문제를 해결하기 위해 등장하였습니다.

     

    https://velog.io/@baeyuna97/Thanos%EB%9E%80

     

     

    여러개의 프로메테우스에서 메트릭 정보를 받아 전체적인 정보를 제공합니다.

    또한 수집된 메트릭을 별도의 스토리지에 저장하여 특정 프로메테우스 인스턴스가 다운되더라도, 그 인스턴스가 담당하는 메트릭을 조회할 수 있습니다.

     

    Thanos Query라는 통합 쿼리를 통해 여러 개의 프로메테우스들이 수집한 메트릭을 한 곳에서 사용할 수 있습니다.

    https://toss.im/slash-21/sessions/1-2

     

    프로메테우스를 여러개로 늘려서 각 프로메테우스가 수집하는 메트릭량을 줄일 수 있습니다.

    프로메테우스에서 지원하는 hashmod로 샤딩 기능을 통해 타켓을 분리하여 메트릭을 수집할 수 있습니다.

    이로써 확장성의 어려움을 해결할 수 있습니다.

     

     

    Thanos Sidecar로 tsdb 사이즈를 축소할 수 있습니다.

     

    https://toss.im/slash-21/sessions/1-2

     

    tsdb 사이즈를 줄이게 되면 프로메테우스의 메모리 이슈를 해결할 수 있습니다.

    tsdb는 Time-series Database의 약어로 수집된 메트릭이 프로메테우스 서버의 메모리와 로컬 디스크에 저장되는 것을 의미합니다.

     

    tsdb를 큰 오브젝트 스토리지에 저장하고 store gateway로 저장된 메트릭을 저장할 수 있습니다.

    훨씬 긴 기간의 메트릭 보관이 가능해집니다.

    이로써 가용성의 어려움을 해결할 수 있습니다.

     

     

     

     

     

     

    참고자료

    https://toss.im/slash-21/sessions/1-2

    https://wlsdn3004.tistory.com/30

    https://owin2828.github.io/devlog/2020/03/13/etc-7.html

    https://bcho.tistory.com/1372?category=731548

     

    '모니터링' 카테고리의 다른 글

    Spring Actuator 안전하게 사용하기  (1) 2024.01.30
    Spring Boot + Prometheus + Grafana 로 모니터링 구축  (0) 2024.01.25
    Grafana란?  (0) 2024.01.19
    ELK란 무엇인가?  (0) 2024.01.13
    내가 만든 ThreadPool 모니터링 하기  (0) 2023.11.17

    댓글

Designed by Tistory.