728x90
Grafana(★★★)
- TBSD데이터를 시각화 / 다양한 데이터 형식 지원(메트릭, 로그, 트레이스 등)
- 그라파나는 시각화 솔루션으로 데이터 자체를 저장하지 않음 → 현재 실습 환경에서는 데이터 소스는 프로메테우스를 사용
- Prometheus에서 수집한 Metric을 시각화 / Prometheus 스텍 설치 시 스텍에 포함되어 설치

- 기본 메뉴

- Search dashboards : 대시보드 검색
- Starred : 즐겨찾기 대시보드
- Dashboards : 대시보드 전체 목록 확인
- Explore : 쿼리 언어 PromQL를 이용해 메트릭 정보를 그래프 형태로 탐색
- Alerting : 경고, 에러 발생 시 사용자에게 경고를 전달
- Connections : 설정, 예) 데이터 소스 설정 등
- Administartor : 사용자, 조직, 플러그인 등 설정
- Connections → Your connections : 스택의 경우 자동으로 프로메테우스를 데이터 소스로 추가해둠 ← 서비스 주소 확인
[ 기본 대시보드 ]
- 스택을 통해서 설치된 기본 대시보드

[ 공식 대시보드 가져오기 ]
- 이미 만들어 진 대시보드를 Import 하여 사용 / Dashboard → New → Import → "대시보드 번호" 입력 후 Load ⇒ 데이터소스(Prometheus 선택) 후 Import
- 15757 추천 - Kubernetes / Views / Global

- 17900 추천 - 1 Kubernetes All-in-one Cluster Monitoring KR(v1.26.0)

- No data 부분 수정
- 해당 패널에서 Edit → 아래 수정 쿼리 입력 후 Run queries 클릭 → 상단 Save 후 Apply
- On-Promise 환경과 AWS 환경 차이로 쿼리 내용 중 "node"를 "instance"로 변경
#원본 쿼리
sum by (node) (irate(node_cpu_seconds_total{mode!~"guest.*|idle|iowait", node="$node"}[5m]))
#하나씩 키워드를 프로메테우스 쿼리 실행창에서 실행해서 확인
node_cpu_seconds_total
node_cpu_seconds_total{mode!~"guest.*|idle|iowait"}
avg(node_cpu_seconds_total{mode!~"guest.*|idle|iowait"}) by (node)
avg(node_cpu_seconds_total{mode!~"guest.*|idle|iowait"}) by (instance)
# 수정
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 (instance) / sum(node_filesystem_size_bytes{instance="$instance"}) by (instance)

- 상단 네임스페이스와 파드 정보 필터링 출력되게 수정

- 오른쪽 상단 Edit → Settings → Variables 아래 namesapce, pod 값 수정 ⇒ 수정 후 Save dashboard 클릭

- namespace 경우 : kube_pod_info 로 수정

- namespace 오른쪽 Showing usages for 클릭 시 → 맨 하단에 pod variable 가 namespace 하위에 종속

- 변수 설정 후, 정상적으로 namespace 선택 및 Pod 선택 확인

- 파드의 리소스 할당 제한 제대로 표시
#CPU
# 기존
sum(kube_pod_container_resource_limits_cpu_cores{pod="$pod"})
# 변경 전 쿼리 시도
kube_pod_container_resource_limits_cpu_cores
kube_pod_container_resource_limits
kube_pod_container_resource_limits{resource="cpu"}
# 변경
sum(kube_pod_container_resource_limits{resource="cpu", pod="$pod"})
#MEMORY
# 기존
sum(kube_pod_container_resource_limits_memory_bytes{pod="$pod"})
# 변경
sum(kube_pod_container_resource_limits{resource="memory", pod="$pod"})


※ 공식 유명 Dashboard 추천
- Dashboard: 1860(Node Exporter Full)
- Dashboard: 15172(Node Exporter for Prometheus)
- Dashboard: 13332 (kube-state-metrics-v2)
- Dashboard: 16032(AWS CNI Metrics)

- Dashboard: 12708 (NGINX exporter)

[ Panel 생성 - 커스텀 대시보드 ]
- 대시보드 내 다양한 Panel 구성할 수 있음
- 쿼리를 PromQL 또는 Builder를 통해 실행
- Time series panel 예제: Title(노드별 5분간 CPU 사용 변화율)
node_cpu_seconds_total
rate(node_cpu_seconds_total[5m])
sum(rate(node_cpu_seconds_total[5m]))
sum(rate(node_cpu_seconds_total[5m])) by (instance)

- Bar chart panel 예제: Add → Visualization 오른쪽(Bar chart) ⇒ 쿼리 Options : Legend(Auto), Format(Table), Type(Instance) → Title(네임스페이스 별 디플로이먼트 갯수)
kube_deployment_status_replicas_available
count(kube_deployment_status_replicas_available) by (namespace)

- Stat panel 예제: Add → Visualization 오른쪽(Stat) → Title(nginx 파드 수)
kube_deployment_spec_replicas
kube_deployment_spec_replicas{deployment="nginx"}
# scale out
kubectl scale deployment nginx --replicas 6

- Gauge panel 예제: Add → Visualization 오른쪽(Gauge) → Title(노드 별 1분간 CPU 사용률)
node_cpu_seconds_total{mode!~"guest.*|idle|iowait"}[1m]
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 - (avg(rate(node_cpu_seconds_total{mode="idle"}[1m])) by (instance))

- Table panel 예제: Add → Visualization 오른쪽(Table) ⇒ 쿼리 Options : Format(Table), Type(Instance) → Title(노드 OS 정보)
- 원하는 데이터만 출력: Transform data → Organize fields by name : id_like, instance, name, pretty_name
node_os_info

- 전체 커스텀 대시보드

그라파나 얼럿 Alert
1. Contact points → Add contact point 클릭
- Integration : 슬랙
- Webhook URL : 아래 주소 입력
- Optional Slack settings → Username : 메시지 구분을 위해서 각자 자신의 닉네임 입력
- 오른쪽 상단 : Test 해보고 저장

2. Notification policies : 기본 정책 수정 Edit - Default contact point(slack)

3. Rule 설정
- 그라파나 → Alerting → Alert ruels → New alert rule : nginx 웹 요청 1분 동안 누적 60 이상 시 Alert 설정




- Alert rules 생성 확인

- nginx 반복 접속 실행 후 슬랙 채널 알람 확인
while true; do curl -s https://nginx.$MyDomain -I | head -n 1; date; done

728x90
'2025_AEWS Study' 카테고리의 다른 글
5주차 - EKS Autoscaling(CAS→Node Autoscaling) (0) | 2025.03.07 |
---|---|
5주차 - EKS Autoscaling(HPA/KEDA/VPA → Pod Autoscaling ) (0) | 2025.03.07 |
4주차 - EKS Observability(3) Prometheus (0) | 2025.03.02 |
4주차 - EKS Observability(2) Metrics-server, Prometheus (0) | 2025.03.01 |
4주차 - EKS Observability(1) Logging (0) | 2025.03.01 |