모니터링 스택 전환 및 CNPG

hbjs97·2024년 11월 21일
post-thumbnail

이번에 모니터링 스택을 기존의 LGTM에서 Kube Prometheus Stack으로 전환하면서 정리한 내용을 기록한다.

기존 모니터링 스택 (LGTM)의 문제점

기존에 사용했던 LGTM 스택은 각각의 서비스를 별도의 차트로 배포하고 관리했다. Kubernetes 환경에서 동작하지만, k8s 친화적인 구성은 아니라고 느꼈다.

예를 들어 kubelet의 메트릭을 수집하려면 관련 리소스를 직접 생성하고 관리해야 하는 불편함이 있었다. 특히 kube-prometheus-stack과 같은 표준화되고 널리 사용되는 솔루션이 잘 마련돼 있는데 굳이 별도로 관리하는 게 비효율적이라고 판단했다.

또한, Prometheus 대신 분산 환경에 적합하다고 판단해 Mimir를 사용했는데, 오히려 이로 인해 호환성 문제가 종종 발생했고, 아직까지 Mimir 관련 레퍼런스가 충분하지 않았다. 분산 환경에서 Prometheus를 대체하는 솔루션으로는 Thanos를 활용하는 게 더 적합하다는 결론을 얻었다.

물론 Mimir Helm 차트의 경우 Gateway(Nginx)가 함께 배포되어 간편하게 BasicAuth 등을 설정할 수 있는 장점은 있었다.

결론적으로, Grafana와 Mimir를 제거하고 kube-prometheus-stack으로 통합하기로 결정했다.

CNPG(CloudNativePG) 모니터링

최근 데이터베이스를 CNPG로 전환하면서 모니터링 설정 과정에서 겪은 내용을 함께 정리한다.

CNPG Operator를 배포 시 monitoring.grafanaDashboard.create=true 로 설정하면 Grafana 대시보드를 자동으로 생성할 수 있다.

CNPG Operator, Cluster 설정에서 PodMonitoring 설정(monitoring.podMonitor)을 활성화하면 PodMonitoring 리소스가 함께 배포된다.
Prometheus가 이를 통해 메트릭을 수집할 수 있다.

PodMonitoring 이 정상적으로 배포되었지만 prometheus 의 targets 에서 조회되지 않았고, prom stack 의 설정을 바꿔줘야했다.

자세한 설정 방법은 아래 CNPG 공식 문서를 참고할 수 있다.

0개의 댓글