Kubernetes 리소스 모니터링 (2) - Grafana
1부 Kubernetes 리소스 모니터링(1) - Prometheus에 이어서 이번 시간에는 Grafana의 개념과 Helm을 사용한 구축 방법에 대해 다뤄보도록 하겠습니다.
Grafana란?
Grafana는 오픈 소스 데이터 시각화 및 모니터링 도구로, 이를 사용해 다양한 데이터 소스에서 수집된 데이터를 기반으로 대시보드와 차트를 생성하여 실시간으로 모니터링할 수 있습니다. Grafana는 Metric, Log, Trace 등 다양한 형태의 데이터를 지원하며, 시스템 상태를 한눈에 파악하기 쉽도록 사용자 친화적인 인터페이스와 강력한 기능을 제공하고 있습니다.
위의 특성으로 아래와 같은 다양한 환경에서 사용됩니다.
- 인프라 모니터링: 서버, 데이터베이스, 네트워크 장비 등의 성능 및 상태 모니터링
- 애플리케이션 모니터링: 애플리케이션의 성능 지표, 오류, 로그 등을 모니터링
- 비즈니스 지표 시각화: 판매량, 트래픽, 사용자 활동 등 비즈니스 관련 데이터 시각화
- IoT 데이터 모니터링: 센서 및 장비에서 수집된 데이터를 실시간으로 시각화
Grafana의 특징
- 다양한 데이터 소스 지원: Prometheus, InfluxDB, Elasticsearch 등 여러 데이터베이스 및 모니터링 도구와 통합이 가능합니다.
- 유연한 대시보드 생성: Drag & Drop 방식으로 손쉽게 대시보드를 구성할 수 있습니다.
- 실시간 모니터링: 실시간으로 데이터를 시각화하여 시스템 상태를 즉각적으로 파악할 수 있습니다.
- 알림 기능: 특정 조건이 충족되면 이메일, Slack 등으로 알림을 보낼 수 있습니다.
- 사용자 관리 및 권한 부여: 조직 내 사용자 관리와 역할 기반 액세스 제어(RBAC)를 지원합니다.
- 플러그인 지원: 패널 플러그인, 데이터 소스 플러그인, 앱 플러그인 등을 통해 기능을 확장할 수 있습니다.
Grafana 구축 - Helm
Grafana Helm Chart Repository 추가
1
2
❯ helm repo add grafana https://grafana.github.io/helm-charts
"grafana" has been added to your repositories
Grafana Helm Chart 배포
이전 시간에 생성한
monitoring
namespace에 배포하도록 하겠습니다.
아래와 같이 설치하면 storage class를 통해 pv, pvc도 사용할 수 있습니다.
1
2
3
4
helm install grafana grafana/grafana -n monitoring \
--set persistence.enabled=true \
--set persistence.storageClassName=<YOUR_STORAGE_CLASS> \
--set persistence.size=5Gi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
❯ helm install grafana grafana/grafana --namespace monitoring
NAME: grafana
LAST DEPLOYED: Fri Nov 08 06:18:38 2024
NAMESPACE: monitoring
STATUS: deployed
REVISION: 1
NOTES:
1. Get your 'admin' user password by running:
kubectl get secret --namespace monitoring grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
2. The Grafana server can be accessed via port 80 on the following DNS name from within your cluster:
grafana.monitoring.svc.cluster.local
Get the Grafana URL to visit by running these commands in the same shell:
export POD_NAME=$(kubectl get pods --namespace monitoring -l "app.kubernetes.io/name=grafana,app.kubernetes.io/instance=grafana" -o jsonpath="{.items[0].metadata.name}")
kubectl --namespace monitoring port-forward $POD_NAME 3000
3. Login with the password from step 1 and the username: admin
#################################################################################
###### WARNING: Persistence is disabled!!! You will lose your data when #####
###### the Grafana pod is terminated. #####
#################################################################################
메시지를 통해 다음과 같은 정보를 얻을 수 있습니다.
kubectl get secret --namespace monitoring grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
위의 명령어를 통해 admin 계정의 비밀번호 확인 가능
export POD_NAME=$(kubectl get pods --namespace monitoring -l "app.kubernetes.io/name=grafana,app.kubernetes.io/instance=grafana" -o jsonpath="{.items[0].metadata.name}")
kubectl --namespace monitoring port-forward $POD_NAME 3000
위의 명령어를 통해 포트 포워딩으로 접속 가능
grafana.monitoring.svc.cluster.local
클러스터 내부에서 위의 DNS 이름으로 접근 가능
Grafana 접속 확인 및 비밀번호 변경
Grafana를 배포하며 나온 메시지를 통해 admin 계정의 비밀번호를 확인한 뒤, 포트 포워딩을 통해 Grafana에 접속하겠습니다.
로그인
접속 화면
비밀번호 변경
Reference
Grafana 공식문서 - https://grafana.com/docs/grafana
궁금하신 점이나 추가해야 할 부분은 댓글이나 아래의 링크를 통해 문의해주세요.
Written with KKam._.Ji