[Dev] 클라우드모니터링 솔루션: 프로메테우스 및 그라파나
최신 클라우드 컴퓨팅에서 모니터링 특히, 쿠버네티스 모니터링으로 많이 활용하고 있는 Prometheus와 Grafana를 살펴봅니다. [ Prometheus: 메트릭 집계 및 알림 ] 🍊 Prometheus란? * https://prometheus.io/, https://github.com/prometheus/prometheus * 시계열 데이터를 위해 설계된 오픈 소스 모니터링 및 알림 도구 키트 * 시스템, 애플리케이션, 서비스에서 메트릭을 수집하는 데 탁월하여 DevOps 팀을 위한 강력한 도구 🍊 주요 기능 * 시계열 데이터베이스: 매우 효율적인 시계열 데이터베이스에 메트릭 저장 * 풀 기반 데이터 수집: 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 모두 리소스 집약적일 수 있기 때문에 워크로드에 따라 구성과 크기를 최적화 필요 >> 설치와 구성방법은 원문 링크를 참고해주세요. * source: https://dev.to/574n13y/monitoring-solutions-prometheus-and-grafana-3e03?bb=192163