모니터링

Thanos란?

Junuuu 2024. 1. 20. 00:01
728x90

개요

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