Grafana Mimir
Grafana Mimir는 Prometheus를 위한 스케일러블 장기 스토리지입니다. 확장성과 성능이 뛰어난 오픈 소스 시계열 데이터베이스입니다. Cortex보다 최대 40배 빠른 쿼리 성능을 자랑하며, Prometheus 100% 호환하여 사용할 수 있습니다. 장기 스토리지로 AWS S3, Google Cloud Storage, Azure Blob Storage, OpenStack Swift 선택하여 사용할 수 있습니다.
Prometheus 사용 시 HA(High Availability) 구성을 할 수 없고, 시계열 데이터를 장기적으로 보관이 안되다 보니 Prometheus운영 시 많은 아쉬움이 있었는데, Grafana Mimir를 사용하게 되면 아쉬움을 해결할 수 있습니다.
구성
Prometheus의 remote write 기능을 설정하여, Grafana Mimir에 Push방식으로 데이터를 수집합니다. Prometheus를 HA(high availability) 구성하려면 etcd 및 consul 클러스터를 구성한 후 distributor에 설정해주어야 합니다. Grafana Mimir에서 Deduplication을 사용하여 Prometheus를 HA로 구성하여 운영할 수 있습니다.
distributor
- Prometheus에서 전송된 시계열 데이터를 처리하는 역할을 합니다.
- 데이터의 정확성을 확인하고 ingester로 데이터를 전송합니다.
ingester
- distributor에서 전송받은 데이터를 object storage에 저장하는 역할을 합니다.
- 전송된 데이터는 메모리/디스크에 저장하고, 주기적(기본 2시간)으로 object storage에 저장합니다.
compactor
- object storage의 사용량을 줄이기 위해 압축하는 역할을 합니다.
- 여러 개의 블록을 하나의 최적화된 큰 블록으로 압축합니다. 중복된 청크를 제거하여 인덱스 크기를 줄이고, 스토리지 비용을 절감하고, 쿼리 성능을 높여줍니다.
query-frontend
- querier와 동일한 API를 제공하며, querier의 쿼리 성능을 높이기 위한 역할을 합니다.
- query-frontend는 queue를 사용하여 쿼리를 내부적으로 보유합니다.
- query-scheduler 사용시 query-frontend를 대신하여 queue 역할을 합니다.
- 쿼리 결과(results-cache)를 재사용할 수 있게 memcached 사용하여 캐시 합니다.
query-scheduler
- 실행할 쿼리를 queue에 유지하고, query-frontend의 성능을 높이기 위한 역할을 합니다.
- query-frontend에서 쿼리를 전송받아 인메모리 queue에 저장하고, queue에 저장된 쿼리를 querier가 주기적으로 가져가서 실행합니다.
querier
- PromQL 표현식을 분석하여, store-gateway를 사용하여 object storage에서 데이터를 가져오고, ingester를 사용하여 최근 데이터를 가져옵니다.
store-gateway
- object storage에서 데이터를 가져오는 역할을 합니다.
참고
Grafana Mimir documentation | Grafana Mimir documentation
Grafana Mimir documentation Grafana Mimir is an open source software project that provides a scalable long-term storage for Prometheus. Some of the core strengths of Grafana Mimir include: Easy to install and maintain: Grafana Mimir’s extensive documenta
grafana.com
'Kubernetes' 카테고리의 다른 글
Prometheus 메모리 튜닝 (0) | 2023.02.22 |
---|---|
containerd 로그 수집을 위한 AWS Fluent Bit 설정 (0) | 2022.12.02 |
Kyverno - Kubernetes Native Policy Management (0) | 2022.10.21 |
NVIDIA device plugin for Kubernetes (2) | 2022.09.29 |
KEDA - Kubernetes Event-driven Autoscaling (0) | 2022.09.28 |