5. Prometheus - Kube-Prometheus-Stack
1. Kube-Prometheus-Stack 개요
Kube-Prometheus-Stack을 통해 Prometheus와 Grafana, Prometheus-Operator, Alertmanager 등을 손쉽게 설치할 수 있는 Stack형 서비스입니다.
Kube-Prometheus-Stack 특징
모든 데이터를 HTTP Pull 기반으로 가져오기 때문에, 메트릭 데이터를 중앙으로 보내지 않아도 된다.
시계열을 기반으로 하는 다차원 데이터 모델을 활용할 수 있는 PromQL을 제공합니다.
분산 스토리지에 대한 의존성 없습니다.
모니터링 설정을 Yaml로 관리, 옵션을 유연하게 변경할 수 있습니다.
Kube-Prometheus-Stack 구조
Prometheus
메트릭 수집 및 시각화, 알림 서비스를 제공하는 오픈 소스 모니터링 시스템입니다.
CNCF 에 소속되어 있으며, 컨테이너 기반의 메트릭 정보를 손쉽게 모니터링 가능합니다.
메트릭을 시계열 데이터로 수집하고 저장하며, 메트릭 정보는 레이블이라는 선택적 키-값 쌍과 함께 기록된 타임스탬프와 함께 저장합니다.
Prometheus는 사용자가 실시간으로 시계열 데이터를 선택하고 집계할 수 있는 PromQL(Prometheus Query Language)이라는 기능적 쿼리 언어를 제공합니다.
Grafana
시계열 기반의 메트릭 데이터를 시각화 하는데 가장 최적화된 오픈소스입니다.
다양한 데이터베이스를 연결하여 데이터를 가져와 시각화 할 수 있으며, 손쉽게 대시보드 패널을 생성할 수 있습니다.
다양한 플러그인이 있어 Grafana 내부적으로 기능을 확장할 수 있습니다.
2. Kube-Prometheus-Stack 사용
Kube-Prometheus-Stack을 통해 설치할 경우 기본적으로 사용할 수 있는 대시보드 템플릿이 존재합니다.
Kubernetes 리소스 및 노드별 리소스 현황 등을 손쉽게 모니터링할 수 있습니다.
신규로 대시보드를 생성할 경우 Browse탭의 New Dashboard를 통해 새로운 대시보드를 생성합니다.
새로운 패널을 생성하기 위해 Add a new panel을 선택을 합니다.
오른쪽의 다양한 컴포넌트의 패널을 선택할 수 있고, 원하는 형태의 가시화를 선택하여 사용할 수 있습니다.
Graphs & Charts
그래프와 차트는 보통 점, 선으로 나타내는 시각화 패널의 종류로 시간 경과에 따른 상태 변화를 확인할 수 있습니다.
종류 및 특징
Time series: 기본 및 기본 그래프 시각화
State timeline: 시간 경과에 따른 상태 변경에 대한 상태
State history: 시간 경과에 따른 주기적 상태
Bar Chart: 모든 범주형 데이터를 시각화
Histogram: 값 분포를 계산하고 막대 차트로 표시
Stats & numbers
스탯과 넘버는 게이지 형태로 통계를 표시할 때 많이 사용하는 시각화 패널의 종류로 해당 숫자에 따라 상태가 변화되는 것을 확인할 수 있습니다.
종류 및 특징
Stat: 큰 통계 및 옵션
Gauge: 일반 방사형 게이지
Bar gauge: 수평 또는 수직 막대 게이지
Misc
테이블과 로그, 네트워크에 대한 그래프로 새롭게 올라온 Data가 해당 Field값에 쌓이는 것을 확인할 수 있습니다.
종류 및 특징
Table: 기본이자, 유일한 테이블 시각화
Logs: 로그의 기본 시각화
Node Graph: 유향 또는 네트워크에 대한 그래프
Widgets
위젯 형식은 목록이나 Markdown, RSS 피드를 표시하는 시각화 유형입니다.
종류 및 특징
Dashboard List: 대시보드 목록들을 나열
Alert list: 경고 목록을 나열
Text panel: 마크다운 및 html을 표시 가능
News panel: RSS 피드 표시 가능
아래와 같이 패널을 설정한다.
cluster:node_cpu:ratio 메트릭값을 통해 노드별 CPU 사용 비율을 모니터링할 수 있습니다.
해당 메트릭을 효과적으로 볼수 있는 Stat 패널을 통해 값을 시각화합니다.
Title 값을 통해 해당 패널의 이름을 설정합니다.
우측 상단의 Apply를 통해 패널을 생성합니다.
이와 같이 커스텀해서 모니터링하고 싶은 값들을 설정하여 시각화할 수 있습니다.
신규로 생성한 패널을 대시보드로 저장할 경우 우측 상단의 Save dashboard를 통해 저장할 수 있습니다.
대시보드 이름을 지정한뒤 대시보드를 저장합니다.
3. Kube-Prometheus-Stack 기술 자료
https://prometheus.io/docs/introduction/overview/
Grafana OSS and Enterprise | Grafana documentation
4. Kube-Prometheus-Stack 릴리즈 노트
https://github.com/prometheus-community/helm-charts/releases