kubernetes 운영을 하다보면 클러스터가 여러개인 환경을 운영하게 된다.
이러한 multi-cluster 환경에서 하나의 대시보드를 통해 모든 지표를 확인할 수 있는 방법은 여러가지가 있다.
prometheus에서 멀티 클러스터 모니터링을 지원하는 방법은 다음과 같다.
1. Prometheus federation
- https://prometheus.io/docs/prometheus/latest/federation/
- prometheus에서 도입한 첫번째 집계 기능이다.
- 각각의 서비스 클러스터에 prometheus(child)를 설치하고 /federate 엔드포인트에서 지표들을 수집/병합하기 위한 prometheus(parent)를 별도의 클러스터에 설치하여 지표를 수집한다.
- 수집해야 하는 자식 prometheus의 수가 증가하게 되면, 성능문제가 발생할 수 있으므로 주의하여 사용한다.
2. Thanos
- 프로메테우스의 가용성, 확장성 등의 문제를 보완하기 위해 나온 오픈소스
- 특징
- Global Query View : Prometheus Server 및 Cluster에서 Prometheus Metric Query를 활성화하여 Prometheus 설정을 확장
- Unlimited Retention : 원하는 Scale이 가능한 Object Storage System을 통해 Metirc을 무제한으로 저장 가능
- Prometheus Compatible(프로메테우스 호환) : Prometheus와 거의 완벽하게 호환되는 API 제공
- DownSampling & Compaction : Object Storage에 저장되어 있는 Data를 DownSampling하여 집계된 Data Query의 성능을 높이고, Data 압축/삭제를 통해 저장공간을 관리
- Thanos Sidecar : 서비스 클러스터에 thanos를 sidecar로 포함한 프로메테우스 서버 배포. query의 요청 처리
- Thanos Query : thanos sidecar와 연결하여 promQL을 처리. 메트릭을 쿼리하여 메트릭을 집계하고 중복을 제거함.
- Thanos Ruler : Thanos에 의해 연동된 모든 프로메테우스의 룰을 정의하고 처리.
- Thanos Compactor : 수집된 데이터를 기준에 따라 장기 보관용 데이터로 변환
3. Prometheus Agent 모드(Prometheus Remote Write)
- Remote Write : Prometheus에서 수집한 모든 지표 또는 일부 지표를 원격 위치로 전달(스트리밍)
- Cortex, Thanos, OpenTelemetry 및 Amazon, Google, Grafana, Logz.io 등과 같은 클라우드 서비스는 모두 원격 쓰기를 통한 데이터 수집을 지원하게 됨
- 안정적이고 효율적인 Remote Write 구현 : 안정적이고 확장 가능한 WAL(write-ahead-log) 구현. 내부 대기열, 샤딩, 스마트 백오프 등을 추가
- Prometheus Agent 모드
- 프로메테우스 v2.32.0 버전 이상에서 사용 가능
- 프로메테우스 서버에 내장되어 --enable-feature=agent 플래그 설정 변경으로 사용가능
- 에이전트 모드는 원격 쓰기 사용 사례에 대해 Prometheus를 최적화
- 쿼리, 경고 및 로컬 스토리지를 비활성화하고 이를 사용자 정의된 TSDB WAL로 대체(스크래핑 로직, 서비스 검색 및 관련 구성과 같은 다른 모든 것은 동일하게 유지)
- 장점
- 효율성 : agetn TSDB WAL은 성공적인 쓰기 직후 데이터를 제거함. remote endpoint 에 도달할 수 없는 경우에는 remote endpoint이 다시 온라인 상태가 될 때까지 데이터를 디스크에 임시로 유지(서버 모드 설정과 동일). 즉agent 모드는 일반 Prometheus 서버가 유사한 상황에서 사용하는 리소스의 일부만 사용하게 됨.
- 확장 가능성 : 메트릭 대상의 양과 대상이 노출하는 메트릭의 수를 기반으로 자동 확장이 가능해야 함. 서버 모드의 Prometheus에서는 수집된 모든 것이 한곳에 있는 그대로 유지되어야 하고(stateful) 모든 인스턴스(예: Thanos Query 또는 Promxy)에서 모든 샘플을 집계할 수 있는 전역 보기 쿼리가 필요하게 됨. agent 모드는 검색, 스크래핑 및 원격 쓰기를 별도의 마이크로 서비스로 이동하여 수집에만 집중된 운영 모델이 가능함.(stateless) Prometheus 기반 스크래핑의 손쉬운 수평적 자동 확장 기능을 활성화하여 지표 대상의 동적 변화에 반응 가능.
'k8s' 카테고리의 다른 글
prometheus agent 사용(EKS환경) (0) | 2023.01.16 |
---|---|
CKA 취득 후기 및 공부 방법 (0) | 2023.01.03 |