실습
- 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
위 기준에 따라 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
전세계 수많은 고수들의 훌륭한 Kubernetes 대시보드를 참조 할 수 있습니다. (물론, 자기 입맛에 맞는 걸 찾는 건 쉽지 않습니다.) 저는 아마도 한국 분으로 보이는 분이 만드신 대시보드를 사용하고 있습니다.(Jungyoul Yu 님)
https://grafana.com/orgs/nalbam
원하는 대시보드 선택하고 화면 오른쪽 대시보드 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
감사합니다.
'쿠버네티스 교육' 카테고리의 다른 글
18. Kube 교육 - Loki Logging System (0) | 2021.06.04 |
---|---|
17. Kube 교육 - AlertManager 설정 (2) | 2021.06.04 |
15. Kube 교육 - Prometheus Stack 설치 (2) | 2021.06.04 |
11. Kube 교육 - OpenEBS LocalPV (0) | 2021.06.04 |
10. Kube 교육 - Kube Storage(PV PVC SC) (0) | 2021.06.04 |