Thanos란?
개요
Thanos라는 용어를 듣고 어떤 것인지 개념을 잡아보고자 합니다.
Thanos란?
Thanos란 여러개의 프로메테우스로부터 메트릭을 조합하여 Thanos에서 전체 프로메테우스의 메트릭을 볼 수 있게 해 주고 수집된 메트릭을 스토리지에 저장합니다.
Thanos에 대해 잘 이해하기 위해서는 프로메테우스가 어떤것인지 어느 정도 알고 있어야 합니다.
프로메테우스에 대해서 잘 모르신다면 "프로메테우스란 무엇인가?" 글을 보면 좋을 것 같습니다.
프로메테우스의 문제
프로메테우스는 클러스터링 구조를 지원하지 않아 2가지 문제를 지닙니다.
- 확장성의 어려움
- 가용성의 어려움
프로메테우스는 메트릭을 로컬 디스크에 수집하여 보관하기 떄문에 저장소의 용량의 한계에 도달하면 오래된 데이터가 자동으로 삭제되어 일정 시간이 지난 데이터는 조회할 수 없습니다.
디스크를 사서 붙이면 어느정도 해결되지만 결국 데이터양이 방대해지면 단일 인스턴스로는 감당되지 않는 문제가 생깁니다.
이런 문제를 해결하기 위해서 Federation이라는 방법을 활용하여 Master-Slave 구조로 관리합니다.
하지만 여전히 가용성에 문제가 발생합니다.
기본적으로 하나의 서버로 기동되고 실행 중인 서버가 다운되거나 장애 및 재시작 등으로 공백이 생기면 그 기간 동안 메트릭을 수집할 수 없습니다.
클러스터링 기능이 존재하지 않아 문제를 해결하기 위해서 인스턴스 2개를 띄우고 메트릭을 수집해야 합니다.
Thanos란?
Thanos는 프로메테우스의 문제를 해결하기 위해 등장하였습니다.
여러개의 프로메테우스에서 메트릭 정보를 받아 전체적인 정보를 제공합니다.
또한 수집된 메트릭을 별도의 스토리지에 저장하여 특정 프로메테우스 인스턴스가 다운되더라도, 그 인스턴스가 담당하는 메트릭을 조회할 수 있습니다.
Thanos Query라는 통합 쿼리를 통해 여러 개의 프로메테우스들이 수집한 메트릭을 한 곳에서 사용할 수 있습니다.
프로메테우스를 여러개로 늘려서 각 프로메테우스가 수집하는 메트릭량을 줄일 수 있습니다.
프로메테우스에서 지원하는 hashmod로 샤딩 기능을 통해 타켓을 분리하여 메트릭을 수집할 수 있습니다.
이로써 확장성의 어려움을 해결할 수 있습니다.
Thanos Sidecar로 tsdb 사이즈를 축소할 수 있습니다.
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