1.5.2.4.2 Prometheus&Grafana로 모니터링 하기
오픈 소스로 쿠버네티스 메트릭 모니터링을 하는 데 가장 많이 사용되는 구성인 Prometheus&Grafana을 확인해 봅니다.
- Prometheus: 오픈소스 시스템 모니터링 및 Alert 툴킷
- Grafana: 수집된 데이터에 대한 질의 등을 통해 대쉬보드 형태로 시각화해 주는 도구
Prometheus 설치
-
설치용 namespace를 만듭니다.
kubectl create ns monitoring
-
Helm Chart를 통해 설치하기 위해 저장소를 등록합니다. 본 예제에서는 Bitnami Helm Chart 저장소를 사용합니다.
helm repo add bitnami https://charts.bitnami.com/bitnami
-
설정 값 정의
Helm Chart를 설치시 설정가능한 파라미터 목록을 참고하여 변경하고자 하는 값을 입력합니다.
-
https://github.com/bitnami/charts/tree/master/bitnami/kube-prometheus#parameters
-
예시
- prometheus와 alertmanager 접근 URL을 nginx ingress controller, letsencrypt를 통한 인증서 사용하는 예시
- 이전 실습 1.2.2.2.2.2 NGINX Ingress Controller에서 TLS termination(feats. Let’s Encrypt) 설치 기준에서 설치하는 예시임
cat <<EOF > values.yaml prometheus: ingress: enabled: true hostname: prometheus.ingress.thekoguryo.xyz path: / annotations: cert-manager.io/cluster-issuer: letsencrypt-staging tls: true ingressClassName: nginx alertmanager: ingress: enabled: true hostname: alertmanager.ingress.thekoguryo.xyz path: / annotations: cert-manager.io/cluster-issuer: letsencrypt-staging tls: true ingressClassName: nginx EOF
-
-
prometheus helm chart 설치
helm install prometheus -n monitoring -f values.yaml bitnami/kube-prometheus --version 8.14.2
-
설치결과
Prometheus의 내부 DNS 정보는 이후 Grafana에서 연동할 때 사용됩니다.
$ helm install prometheus -n monitoring -f values.yaml bitnami/kube-prometheus --version 8.14.2 NAME: prometheus ... Prometheus can be accessed via port "9090" on the following DNS name from within your cluster: prometheus-kube-prometheus-prometheus.monitoring.svc.cluster.local To access Prometheus from outside the cluster execute the following commands: You should be able to access your new Prometheus installation through https://prometheus.ingress.thekoguryo.xyz ...
Grafana 설치
-
설정 값 정의
Helm Chart를 설치시 설정가능한 파라미터 목록을 참고하여 변경하고자 하는 값을 입력합니다.
- https://github.com/bitnami/charts/tree/master/bitnami/grafana#parameters
- grafana 접근 URL을 이전 장(4.1.4.2 NGINX Ingress Controller에서 TLS termination(feats. Let’s Encrypt)에서 설치한 nginx ingress controller를 사용하는 예시입니다.
cat <<EOF > values.yaml admin: password: "higrafana" ingress: enabled: true hostname: grafana.ingress.thekoguryo.xyz path: / annotations: cert-manager.io/cluster-issuer: letsencrypt-staging tls: true ingressClassName: nginx EOF
-
grafana helm chart 설치
helm install grafana -n monitoring -f values.yaml bitnami/grafana
-
설치결과
아래와 같이 설치되며, 실제 컨테이너가 기동하는 데 까지 약간의 시간이 걸립니다.
$ helm install grafana -n monitoring -f values.yaml bitnami/grafana --version 8.4.6 NAME: grafana ... 1. Get the application URL by running these commands: https://grafana.ingress.thekoguryo.xyz/ 2. Get the admin credentials: echo "User: admin" echo "Password: $(kubectl get secret grafana-admin --namespace monitoring -o jsonpath="{.data.GF_SECURITY_ADMIN_PASSWORD}" | base64 -d)"
Grafana 설정
-
Grafana 웹 UI를 접속합니다.
-
URL: values.yaml에서 설정한 ingress.hostname
-
관리자 계정
-
User: admin
-
Password: values.yaml에 설정한 admin.password 또는 미입력시 다음 명령으로 확인
echo "Password: $(kubectl get secret grafana-admin --namespace monitoring -o jsonpath="{.data.GF_SECURITY_ADMIN_PASSWORD}" | base64 --decode)"
-
-
-
Prometheus 등록을 위해 왼쪽 메뉴에서 Configuration > Data sources 선택
-
Add data source 클릭
-
Prometheus 선택
-
Prometheus 연결정보 입력
앞서 Prometheus 설치 로그에 확인한 Prometheus 내부 연결 정보를 입력합니다.
http://prometheus-kube-prometheus-prometheus.monitoring.svc.cluster.local:9090
-
아래 쪽 Save & test 클릭
Grafana Dashboard 추가
-
Kubernetes 모니터링을 위해 공개된 Grafana Dashboard를 사용할 수 있습니다.
-
위 사이트에서 검색된 대쉬보드 중 원하는 것을 선택합니다.
-
대쉬보드 상세 페이지에 ID를 확인합니다.
-
Dashboard 등록을 위해 왼쪽 메뉴에서 Dashboards를 클릭합니다.
-
New > Import 클릭
-
임포트할 대쉬보드 ID(예시, 15757) 입력후 Load 클릭
-
data source를 앞서 등록한 Prometheus 선택후 Import 클릭
-
임포트된 대쉬보드를 통해 OKE 클러스터 모니터링
-
위와 같이 공개된 대쉬보드를 사용하거나, 원하는 대쉬보드를 작성하여 Prometheus에서 수집된 메트릭 정보를 이용하여, Kubernetes 클러스터를 모니터링 할 수 있습니다.
이 글은 개인으로서, 개인의 시간을 할애하여 작성된 글입니다. 글의 내용에 오류가 있을 수 있으며, 글 속의 의견은 개인적인 의견입니다.