Monitoring Solutions: Prometheus and Grafana
DEV Community
최신 클라우드 컴퓨팅에서 모니터링 특히, 쿠버네티스 모니터링으로 많이 활용하고 있는 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
다음 내용이 궁금하다면?
이미 회원이신가요?
2024년 11월 24일 오후 1:05