Grafana
- TSDB 데이터를 시각화하고, 다양한 데이터 형식 지원합니다.(메트릭, 로그, 트레이스 등)
- 그라파나는 시각화 솔루션으로 데이터 자체를 저장하지는 않습니다. → 현재 실습 환경에서는 데이터 소스는 프로메테우스를 사용
- 접속 정보 확인 및 로그인 : 기본 계정 : admin / 비밀번호 : prom-operator
- 기본 대시보드 확인
1. Search dashboards : 대시보드 검색
2. Starred : 즐겨찾기 대시보드
3. Dashboards : 대시보드 전체 목록 확인
4. Explore : 쿼리 언어 PromQL를 이용해 메트릭 정보를 그래프 형태로 탐색
5. Alerting : 경고, 에러 발생 시 사용자에게 경고를 전달
6. Connections : 설정, 예) 데이터 소스 설정 등
7. Administartor : 사용자, 조직, 플러그인 등 설정
- Connections → Data source : 스택의 경우 자동으로 프로메테우스를 데이터 소스로 추가합니다.
대시보드 사용 - 기본 대시보드와 공식 대시보드 가져오기
기본 대시보드
- 스택을 통해서 설치된 기본 대시보드 확인 : Dashboards → Browse
- 분류
- 자원 사용량 - Cluster/POD Resources
- 노드 자원 사용량 - Node Exporter
- 주요 애플리케이션 - CoreDNS 등
공식 대시보드
- 미리 생성해 둔 대시보드를 Import 하여 사용
- Kubernetes / Views / Global
- Dashboard → New → Import → 15757 력입력 후 Load ⇒ 데이터소스(Prometheus 선택) 후 Import 클릭
- 1 Kubernetes All-in-one Cluster Monitoring KR
- Dashboard → New → Import → 17900 입력 후 Load ⇒ 데이터소스(Prometheus 선택) 후 Import 클릭
- AWS와 On-Promise의 환경 차이로 인해 CPU 점유율, 메모리 점유율, 디스크 사용률 패널의 쿼리 수정이 필요하다
# 수정 : CPU 점유율
sum by (instance) (irate(node_cpu_seconds_total{mode!~"guest.*|idle|iowait", instance="$instance"}[5m]))
# 수정 : 메모리 점유율
(node_memory_MemTotal_bytes{instance="$instance"}-node_memory_MemAvailable_bytes{instance="$instance"})/node_memory_MemTotal_bytes{instance="$instance"}
# 수정 : 디스크 사용률
sum(node_filesystem_size_bytes{instance="$instance"} - node_filesystem_avail_bytes{instance="$instance"}) by (node) / sum(node_filesystem_size_bytes{instance="$instance"}) by (node)
- Node Exporter Full
- Dashboard → New → Import → 1860 입력 후 Load ⇒ 데이터소스(Prometheus 선택) 후 Import 클릭
- Node Exporter for Prometheus Dashboard based on 11074
- Dashboard → New → Import → 15172 입력 후 Load ⇒ 데이터소스(Prometheus 선택) 후 Import 클릭
- kube-state-metrics-v2
- Dashboard → New → Import → 13332 입력 후 Load ⇒ 데이터소스(Prometheus 선택) 후 Import 클릭
- AWS CNI Metrics
- Dashboard → New → Import → 16032 입력 후 Load ⇒ 데이터소스(Prometheus 선택) 후 Import 클릭
- NGINX 애플리케이션 모니터링 대시보드 추가
- Dashboard → New → Import → 12708 입력 후 Load ⇒ 데이터소스(Prometheus 선택) 후 Import 클릭
Panel 생성 - 커스텀 Dashboard
- 신규 대시보스 생성 → 패널 생성(Code 로 변경) → 쿼리 입력 후 Run queries 클릭 후 오른쪽 상단 Apply 클릭 → 대시보드 상단 저장
- Time series
node_cpu_seconds_total
rate(node_cpu_seconds_total[5m])
sum(rate(node_cpu_seconds_total[5m]))
# 노드별 5분간 CPU 사용 변화율
sum(rate(node_cpu_seconds_total[5m])) by (instance)
- Bar chart
kube_deployment_status_replicas_available
# 네임스페이스 별 디플로이먼트 갯수
# Query Options : Format(Table), Type(Instance)
count(kube_deployment_status_replicas_available) by (namespace)
- stat
kube_deployment_spec_replicas
# nginx 파드 수
kube_deployment_spec_replicas{deployment="nginx"}
- Gauge
node_cpu_seconds_total
node_cpu_seconds_total{mode="idle"}
node_cpu_seconds_total{mode="idle"}[1m]
rate(node_cpu_seconds_total{mode="idle"}[1m])
avg(rate(node_cpu_seconds_total{mode="idle"}[1m])) by (instance)
# 노드 별 1분간 CPU 사용률
1 - (avg(rate(node_cpu_seconds_total{mode="idle"}[1m])) by (instance))
- Table
node_os_info
Grafana Alert
Alert rule 설정
- 그라파나 → Alerting → Alert ruels → Create alert rule : nginx 웹 요청 1분 동안 누적 60 이상 시 Alert 설정
- 아래 Folder, Evaluation group(1m), Pending period(1m) 은 +Add new 클릭 후 신규 생성
- 오른쪽 상단 Save and exit 클릭
Contact point 설정
- Contact points → Add contact point 클릭
- Integration : 슬랙
- Webhook URL :
https://hooks.slack.com/services/xxxx/xxxx/xxxxxxxx
- Optional Slack settings → Username : 메시지 구분을 위해서 각자 자신의 닉네임 입력
- 오른쪽 상단 : Test 해보고 저장
Notification policy 설정
- 기본 정책 수정 Edit - Default contact point(slack)
nginx 반복 접속 실행 후 슬랙 채널 알람 확인
while true; do curl -s https://nginx.$MyDomain -I | head -n 1; date; done
'Kubernetes > AWS EKS Workshop Study' 카테고리의 다른 글
5주차 2편 EKS Autoscaling - Karpenter (1) | 2024.04.07 |
---|---|
5주차 1편 EKS Autoscaling - HPA/KEDA, VPA, CA, CPA (1) | 2024.04.07 |
4주차 1편 EKS Observability - Prometheus (0) | 2024.03.31 |
3주차 2편 EKS Fundamentals - CSI, Node Group (0) | 2024.03.24 |