쿠버네티스 교육

16. Kube 교육 - Grafana Custom 대시보드 생성

Jerry_이정훈 2021. 6. 4. 16:46
728x90

실습

  • Prometheus-stack Helm Chart Built-in + Grafana 공식 홈페이지 모니터링 대시보드 Import 
  • 기존 대시보드 nginx active connections graph(panel)  추가

모니터링 Dashboard 이슈 사항

클러스터 운영을 위해서 시스템 운영 현황 대시보드는 필수적입니다. 문제는 모니터링 해야 할 Metric이 너무 많아 선택이 어렵다는 것 입니다. 그리고 신규 Grafana 기반으로 새로운 모니터링 대쉬보드 만들기가 쉽지는 않습니다.

 

운영에 반드시 필수적인 부문이지만 저도 경험이 많지 않아 자세한 일사이트를 나누기는 어렵습니다. 다만, 간단히 사용 가능하도록 기존 다른 사람들이 잘 만든 대시보드를 Import 하는 방법과 서로 다른 대시보드에서 내가 원하는 부문 Panel(그래프)을 추가하는 방법을 공유해 드립니다. 

 

그나마 다행인 건 그파라나 공식 홈페이지 또는 Prometheus-stack Helm 설치 하시면 기본적으로 제공되는 대시보드가 이미 충분히 훌륭하다는 것 입니다. 

 

참고로 대시보드는 갓 구글신들의 4 golden singnals 기준으로 모니터링 대시보드 생성하시는 것을 추천 드립니다.

 

참조 자료

https://medium.com/expedia-group-tech/creating-monitoring-dashboards-1f3fbe0ae1ac

 

Creating Monitoring Dashboards

Guidelines for developers

medium.com

위 기준에 따라 1) latency 2) throughput 3) errors 4) utilization 측면에서 모니터링 대시보드를 개별 상황에 맞게 생성하시면 됩니다. 

 

Built-in 대시 보드 확인

대시 보드 확인에 앞서 Prometheus SVC 수정이 필요합니다. Defualt 설치 시 prometheus endpoint를 제대로 가져오지 못하는 버그가 있습니다.

[spkr@erdia22 kube-prometheus-stack-16.1.0 (k3s:monitoring)]$ k get endpoints
NAME                                      ENDPOINTS                                            AGE
prometheus-kube-prometheus-prometheus     <none>                                               6m
(생략)

prometheus-svc.yml 아래와 같이 새롭게 만드시고 apply 해 줍니다.

prometheus-svc.yml

apiVersion: v1
kind: Service
metadata:
  annotations:
    meta.helm.sh/release-name: prometheus
    meta.helm.sh/release-namespace: prometheus
  labels:
    app: kube-prometheus-stack-prometheus
    app.kubernetes.io/instance: prometheus
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/part-of: kube-prometheus-stack
    app.kubernetes.io/version: 16.1.0
    chart: kube-prometheus-stack-16.1.0
    heritage: Helm
    release: prometheus
    self-monitor: "true"
  name: prometheus-kube-prometheus-prometheus
  namespace: monitoring
spec:
  ports:
  - name: web
    nodePort: 30090
    port: 9090
  selector:
    app.kubernetes.io/name: prometheus
  type: NodePort

기존 Prometheus Service를 삭제하고 신규 Serivce를 생성합니다.

[spkr@erdia22 kube-prometheus-stack-16.1.0 (k3s:monitoring)]$ k delete svc prometheus-kube-prometheus-prometheus

service "prometheus-kube-prometheus-prometheus" deleted

[spkr@erdia22 kube-prometheus-stack-16.1.0 (k3s:monitoring)]$ ka prometheus-svc.yml
service/prometheus-kube-prometheus-prometheus created

[spkr@erdia22 kube-prometheus-stack-16.1.0 (k3s:monitoring)]$ k get endpoints
NAME                                      ENDPOINTS                                            AGE
prometheus-kube-prometheus-operator       10.42.0.199:10250                                    9m47s

다음으로 prometheus-stack helm 설치 시 기본으로 제공되는 대시보드를 살펴 보겠습니다. 

 

그라파나 Admin Page 화면 좌측 Dashboards.Manage 클릭하시면

이미 설치되어 있는 다양한 대시보드 확인 가능합니다. (만세입니다. 이걸 다 만든다고 생각한다면 ㅎㅎ)

하나씩 보시면 되는데 개인적으로 저는 아래 약 5개 정도 대시보드만 봅니다.

다들 볼만하게 생겼습니다. 

Custom 대시보드 생성

기본 대시보드 만으로는 무언가 허전한 느낌적인 느낌이 있습니다. (custom 욕심은 한도 끝도 없습니다.) 그러면 grafana.com 공식 홈페이지에서 다른 사람들이 올려 놓은 대쉬보드를 참조합니다.

 

https://grafana.com/grafana/dashboards

 

Grafana Dashboards - discover and share dashboards for Grafana.

Grafana.com provides a central repository where the community can come together to discover and share dashboards.

grafana.com

전세계 수많은 고수들의 훌륭한 Kubernetes 대시보드를 참조 할 수 있습니다. (물론, 자기 입맛에 맞는 걸 찾는 건 쉽지 않습니다.) 저는 아마도 한국 분으로 보이는 분이 만드신 대시보드를 사용하고 있습니다.(Jungyoul Yu 님)

https://grafana.com/orgs/nalbam

 

Jungyoul Yu Overview

Data visualization & monitoring with support for Graphite, InfluxDB, Prometheus, Elasticsearch and many more databases

grafana.com

원하는 대시보드 선택하고 화면 오른쪽 대시보드 ID를 메모 합니다. 

그럼 위 대시보드를 Import 합니다. Admin Page 왼편 + - Import를 선택 합니다. 

메모한 대시 보드 ID를 추가 합니다. 

 

정상적으로 대시보드가 Import 되었습니다. 

Data가 나타나지 않는(N/A) 그래프 들이 여러 개 있습니다. 이 경우 상세 모니터링 메트릭 Parameter를 수정해야 합니다. 일단 지금 단계에서는 삭제하시는 것을 추천 드립니다. (자세한 수정 방법은 생략하겠습니다.)

해당 모니터링 페이지에서 제가 원하는 다른 대시보드의 Panel(모니터링 그래프)를 추가하겠습니다. 이런 과정을 반복하시면 하나의 대시보드에서 제가 원하는 항목 전체를 한꺼번에 조회 가능합니다. 

 

예를 들어 아래와 같은 Network I/O (2m) 그래프를 제가 원하는 대쉬보드에 추가해 보겠습니다. 

화면 중간 NGINX Active Connections 선택하시고 아래 More - Copy를 선택 합니다. 

Copy 후 내가 원하는 대쉬보드로 이동 후 모니터링 페이지 화면 상단 오른편 Add panel 선택 합니다.

그리고 Paste copied panel을 선택해 줍니다. 

이제 기존 대시보드에 내가 원하는 새로운 Panel이 추가되었습니다. 이러한 방법을 반복하여 기존 대시 보드에 자기가 원하는 Panel을 추가 할 수 있습니다.

물론, 이러한 기존 Panel 추가하는 방법 만으로는 한계가 있습니다. 별도로 Grafana Query를 배우셔서  추가하는 방법을 아셔야 합니다. (자세한 방법은 저도 많이 경험이 없습니다. 구글링 통해서 배우시는 걸 추천 드립니다.)

 참고로 제가 사용하는 대시보드를 Grafana dashboard 홈페이지에 아래와 같이 공유해 드립니다. 

 

Grafana Dashboard ID

14512

 



감사합니다. 

 

반응형