1. 모니터링 도구 소개
1) Prometheus
- SoundCloud사에서 만든 메트릭 기반의 오픈소스 모니터링 시스템다.
- 프로메테우스는 메트릭을 시계열 데이터로 수집하고 저장한다.
- RDB 대신 메트릭 이름과 key-value 쌍으로 식별되는 다차원 데이터 모델을 사용한다. 이에, 많은 양의 정보를 빠르게 검색할 수 있다.
2) Grafana
- 시계열 매트릭 데이터를 시각화 하는데 가장 최적화된 대시보드를 제공해주는 오픈소스 툴킷이다.
- 사용자가 하나의 대시보드로 통합된 차트와 그래프를 통해 데이터를 확인할 수 있어 데이터를 손쉽게 해석하고 이해할 수 있다.
2. Prometheus & Grafana 설치
1) Helm 설치
# Apt (데비안/우분투)
curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
sudo apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm
2) helm repo에 Helm Chart 저장소 등록
- Helm 차트("prometheus-community.github.io")를 사용하여 간단하게 Prometheus & Grafana를 설치할 수 있다.
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
3) Prometheus & Grafana 설치
# 모니터링에 사용할 namespace 생성
kubectl create namespace monitoring
# helm을 통해 Prometheus & Grafana 설치
helm install prometheus prometheus-community/kube-prometheus-stack --namespace monitoring
4) 설치 확인
- 성공적으로 설치가 완료되면 하기와 같은 pod,svc가 실행되는 것을 확인할 수 있다.
boc@vm-bastion-hub:~$ kubectl get pods,svc -n monitoring
NAME READY STATUS RESTARTS AGE
pod/alertmanager-prometheus-kube-prometheus-alertmanager-0 2/2 Running 0 76s
pod/prometheus-grafana-8559df6c5d-vch8j 3/3 Running 0 79s
pod/prometheus-kube-prometheus-operator-7585f6c976-p7fj2 1/1 Running 0 79s
pod/prometheus-kube-state-metrics-6b9ff84f5f-lz2bp 1/1 Running 0 79s
pod/prometheus-prometheus-kube-prometheus-prometheus-0 2/2 Running 0 76s
pod/prometheus-prometheus-node-exporter-g65vn 1/1 Running 0 79s
pod/prometheus-prometheus-node-exporter-rbgzb 1/1 Running 0 79s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/alertmanager-operated ClusterIP None <none> 9093/TCP,9094/TCP,9094/UDP 76s
service/prometheus-grafana ClusterIP 10.0.24.114 <none> 80/TCP 79s
service/prometheus-kube-prometheus-alertmanager ClusterIP 10.0.19.248 <none> 9093/TCP,8080/TCP 79s
service/prometheus-kube-prometheus-operator ClusterIP 10.0.76.57 <none> 443/TCP 79s
service/prometheus-kube-prometheus-prometheus ClusterIP 10.0.237.152 <none> 9090/TCP,8080/TCP 79s
service/prometheus-kube-state-metrics ClusterIP 10.0.29.28 <none> 8080/TCP 79s
service/prometheus-operated ClusterIP None <none> 9090/TCP 76s
service/prometheus-prometheus-node-exporter ClusterIP 10.0.49.243 <none> 9100/TCP 79s
5) 서비스 type 수정
- 현재 서비스 type은 ClusterIP로 외부에서 Pod에 접근하기 위해서 서비스 type을 LoadBalancer 또는 NodePort로 수정
boc@vm-bastion-hub:~$ kubectl patch svc prometheus-grafana -n monitoring -p '{"spec": {"type": "LoadBalancer"}}'
service/prometheus-kube-prometheus-prometheus patched
boc@vm-bastion-hub:~$ kubectl get svc -n monitoring
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
alertmanager-operated ClusterIP None <none> 9093/TCP,9094/TCP,9094/UDP 15m
prometheus-grafana LoadBalancer 10.0.24.114 20.249.xxx.xxx 80:31716/TCP 15m
prometheus-kube-prometheus-alertmanager ClusterIP 10.0.19.248 <none> 9093/TCP,8080/TCP 15m
prometheus-kube-prometheus-operator ClusterIP 10.0.76.57 <none> 443/TCP 15m
prometheus-kube-prometheus-prometheus ClusterIP 10.0.237.152 <none> 9090/TCP,8080/TCP 15m
prometheus-kube-state-metrics ClusterIP 10.0.29.28 <none> 8080/TCP 15m
prometheus-operated ClusterIP None <none> 9090/TCP 15m
prometheus-prometheus-node-exporter ClusterIP 10.0.49.243 <none> 9100/TCP 15m
6) Grafana 로그인
- prometheus-grafana 의 {EXTERNAL-IP}:80로 접속한다.
- 초기 계정은 username: admin, Password: prom-operator 이다.
참고
'Container > Kubernetes' 카테고리의 다른 글
[Kubernetes] Istio 설치 및 BookInfo 예제 (0) | 2024.04.04 |
---|---|
[Kubernetes] MSA 및 Service Mash 소개 (0) | 2024.04.03 |
[Kubernetes] AKS 클러스터 노드 접속 방법 (0) | 2024.03.07 |
[AKS] Azure Key Vault Provider for Secrets Store CSI Driver 테스트 (0) | 2024.01.22 |
[Kubernetes] Network Policy 개념 및 적용 방법 (0) | 2024.01.09 |