mingming

grafana on kubernetes 본문

kubernetes

grafana on kubernetes

mingming_96 2023. 9. 20. 23:42

grafana 

이전 글에서도 소개해드렸지만 grafana는 그라파나 랩스에서 개발한 특정 소프트웨어에 종속되지 않는 독립적인 시각화 도구 입니다. 오픈소스로 다양한 data source의 시각화를 지원해줍니다. 

 

사전 준비사항 

1. nfs server

prometheus-server 가 pvc를 통해 pv를 사용할 수 있도록 nfs server를 구성한 후 pv를 생성해 줍니다. 

 

2. helm install

helm을 통해 설치하기 때문에 helm 명령어가 설치되어 있어야 합니다. 

 

3. metal lb 

prometheus-server를 외부에서 접근 가능하도록 LoadBalancer type으로 노출 시키기 위해 metallb가 설치되어 있어야 합니다. | svc port forwarding 혹은 Nodeport 로 노출시켜도 됩니다. 

 

4. prometheus

prometheus를 data source로 지정해 해당 메트릭값을 시각화 합니다. 따라서 prometheus가 설치되어 있어야 합니다.

helm repo add 

grafana 에서 제공하는 helm chart를 이용합니다. 

helm repo add grafana https://grafana.github.io/helm-charts
helm repo update

 

values.yaml

grafana helm chart의 values.yaml 파일을 가져옵니다. 

helm show grafana/grafana > grafana-values.yaml

 

Valuefile Definition

vim grafana-values.yaml

 325 persistence:
 326   type: pvc
 327   enabled: true ## 기본설정 false
 328   # storageClassName: default
 329   accessModes:
 330     - ReadWriteOnce
 331   size: 10Gi
 332   # annotations: {}
 333   finalizers:
 334     - kubernetes.io/pvc-protection 
  ------------------------------- 중략 -------------------------------
 354 initChownData:
 355   ## If false, data ownership will not be reset at startup
 356   ## This allows the grafana-server to be run with an arbitrary user
 357   ##
 358   enabled: false  # init container 디렉터리 소유권 재설정 off

 

PV 생성 

공유 디렉터리 생성 및 권한 부여

mkdir /nfs_shared/grafana

chmod 777 /nfs_shared/grafana

systemctl restart nfs-server

vim grafana-pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: grafana-pv
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  nfs:
    server: 192.168.45.240
    path: /nfs_shared/grafana
kubectl apply -f grafana-pv.yaml

 

grafana install

수정한 values.yaml 파일을 이용해 grafana를 설치합니다, prometheus 와 같은 네임스페이스에 배포합니다.

helm install grafana grafana/grafana -f grafana-values.yaml --namespace monitoring

kubectl get all -n monitoring

 

grafana Service Expose

grafana의 svc를 LoadBalancer type으로 변경해 외부에서 접속가능하도록 수정합니다. 

 

kubectl patch svc grafana -p '{"spec":{"type":"LoadBalancer"}}'

kubectl patch svc grafana -p '{"spec":{"type":"NodePort"}}'

할당받은 metallb 주소로 접근가능한지 확인합니다.

Id : admin 

password : 아래의 명령을 통해 password를 확인 합니다. 

kubectl get secret --namespace default grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo