IT

[Dev] 클라우드모니터링 솔루션: 프로메테우스 및 그라파나

H.Hoper 2024. 12. 1. 00:30

최신 클라우드 컴퓨팅에서 모니터링 특히, 쿠버네티스 모니터링으로 많이 활용하고 있는 Prometheus와 Grafana를 살펴봅니다.

 

[ Prometheus: 메트릭 집계 및 알림 ]

🍊 Prometheus란?

🍊 주요 기능

  • 시계열 데이터베이스: 매우 효율적인 시계열 데이터베이스에 메트릭 저장
  • 풀 기반 데이터 수집: Prometheus는 HTTP를 사용하여 정의된 간격으로 모니터링 대상에서 메트릭을 가져옴
  • PromQL: 메트릭을 필터링하고 집계하기 위한 강력한 쿼리 언어
  • 서비스 검색: Kubernetes 또는 Consul과 같은 서비스 검색 메커니즘을 사용하여 대상을 자동으로 검색
  • 알림: 사전 정의된 규칙에 따라 알림을 전송하는 통합 알림 관리자
  • 다차원 데이터 모델: 메트릭은 레이블과 함께 저장되므로 데이터를 더 쉽게 분류하고 분석하여 자세한 인사이트를 얻을수 있음

🍊 아키텍처

  • Prometheus Server: 메트릭 스크래핑 및 저장 담당
  • Exporters: Prometheus의 형식으로 메트릭을 노출하는 애플리케이션 또는 서비스(예: 시스템 메트릭의 경우 노드 익스포터, 컨테이너 메트릭의 경우 cAdvisor).
  • Alertmanager: Prometheus에 정의된 규칙에 의해 트리거되는 알림 처리
  • Pushgateway: 임시 작업이 메트릭을 Prometheus로 직접 푸시

 

[ Grafana: 시각화 및 대시보드 ]

🍊 Grafana란?

  • https://grafana.com/grafana/
  • 오픈 소스 분석 및 시각화 플랫폼
  • Prometheus, Elasticsearch, InfluxDB를 비롯한 다양한 백엔드에서 가져온 데이터를 시각화하기 위한 동적 대시보드 제공

🍊 주요 기능

  • 사용자 정의 가능한 대시보드: 필요에 따라 시각적으로 풍부한 대화형 대시보드 todtjd
  • 데이터 소스 유연성: Prometheus를 비롯한 다양한 데이터 소스 지원
  • 알림 및 알림: 시각화된 메트릭을 기반으로 경고를 정의하고 트리거
  • 쿼리 빌더: 지원되는 백엔드에 대한 쿼리 생성 프로세스 간소화
  • 커뮤니티 플러그인: 확장된 기능을 위한 대규모 플러그인 리포지토리
  • 사용자 관리: 공유 대시보드에 대한 역할 기반 액세스 제어

🍊 아키텍처

  • 프론트엔드: 대시보드 생성 및 관리를 위한 풍부한 UI.
  • 백엔드: 데이터 소스 연결, 알림, 인증을 처리합니다.
  • 데이터 소스 플러그인: 다양한 모니터링 시스템 및 데이터베이스와의 인터페이스.

 

[ 프로메테우스와 그라파나: 완벽한 조합 ]

  • Prometheus의 메트릭 수집 및 알림 + Grafana의 시각화 = 강력한 모니터링
  • 동작 방식
    • Prometheus는 메트릭 데이터를 수집하고 저장
    • Grafana는 PromQL을 통해 Prometheus에 메트릭을 쿼리
    • Grafana는 이러한 메트릭을 사용자 정의 가능한 대시보드에서 시각화
    • Grafana에서 경고를 관리하고 시각화하여 시스템 상태에 대한 통합된 보기 제공

 

[ 사용 사례 ]

🍊 인프라 모니터링

  • Prometheus를 사용해 노드 익스포터 또는 cAdvisor에서 메트릭을 스크랩
  • Grafana 대시보드에서 CPU, 메모리, 디스크 및 네트워크 사용량을 시각화

🍊 애플리케이션 성능 모니터링

  • Prometheus 클라이언트 라이브러리와 같은 라이브러리를 통해 노출되는 애플리케이션 수준 메트릭을 사용해 지연 시간, 오류율, 요청 처리량을 모니터링

🍊 Kubernetes 모니터링

  • Prometheus를 사용해 Kubernetes 구성 요소(예: kubelet, kube-apiserver)에서 메트릭을 스크랩
  • Grafana에서 클러스터 상태, 포드 사용률, 노드 성능을 시각화

🍊 알림 및 인시던트 대응

  • 임계값(예: CPU > 80%)을 기반으로 Prometheus에서 alert를 정의
  • Alertmanager를 사용하여 대기 중인 팀에게 Slack, PagerDuty 또는 이메일을 통해 알림 보내기
  • Grafana의 과거 데이터와 그래프로 인시던트를 분석

 

[ 과제와 이를 극복하는 방법 ]

🍊 데이터 보존 제한

  • Prometheus는 장기 보관용으로 설계되지 않았기 때문에, 장기간 보존을 위해서는 Thanos(https://thanos.io/) 또는 Cortex(https://cortexmetrics.io/)와 같은 원격 스토리지 솔루션 검토 필요

🍊 복잡한 쿼리

  • PromQL은 어려울 수 있기 때문에, Grafana의 UI를 활용해 쿼리 생성을 간소화 할 필요

🍊 리소스 사용

  • Prometheus와 Grafana 모두 리소스 집약적일 수 있기 때문에 워크로드에 따라 구성과 크기를 최적화 필요

 

>> 설치와 구성방법은 원문 링크를 참고해주세요.