04. 실전 대시보드 제작 기초 (Metrics & Logs)
학습 목표: Grafana에서 처음부터 대시보드를 만들고 Prometheus 메트릭과 Loki 로그를 함께 시각화하는 방법을 익힙니다. 실습 환경: Kubernetes Cluster, Grafana, Prometheus, Loki
🏗️ 1. 대시보드의 기본 구조
Grafana 대시보드는 **Rows(행)**와 **Panels(패널)**로 구성됩니다.
- Panel: 데이터를 시각화하는 기본 단위 (그래프, 게이지, 로그, 텍스트 등)
- Row: 패널들을 그룹화하고 접고 펼칠 수 있는 논리적 구획
우리는 오늘 “Demo App Monitoring” 대시보드를 만들며 다음 핵심 패널들을 직접 구현해볼 것입니다.
- 📈 CPU/Memory: 시계열 그래프 (Time Series)
- 🌡️ Resource Usage: 현재 상태 게이지 (Gauge)
- 📜 Logs: 실시간 로그 스트림 (Logs)
- 🚨 Error Count: 주요 지표 강조 (Stat)
📝 2. 새 대시보드 생성
- Grafana 왼쪽 메뉴에서 Dashboards 아이콘 클릭 → New → New Dashboard
- Add visualization 버튼 클릭
📊 3. Prometheus 메트릭 시각화 (Time Series)
첫 번째로, 클러스터 노드의 CPU 사용률을 시간에 따라 흐르는 선 그래프로 그려봅시다.
3-1. 쿼리 작성 (Query)
- Data source:
Prometheus선택 - Query:
# 전체 CPU 사용률 계산 (Idle 제외) 100 - (avg(rate(node_cpu_seconds_total{mode="idle"}[1m])) by (instance) * 100)rate(..[1m]): 최근 1분간의 변화율mode="idle": 유휴 상태(놀고 있는 상태)100 - ...: 100에서 유휴 상태를 빼서 실제 사용률을 구함
3-2. 시각화 설정 (Panel options)
오른쪽 패널 옵션에서 다음 설정을 변경합니다.
- Title:
Cluster Node CPU Usage - Visualization:
Time series - Unit:
Misc>Percent (0-100) - Min:
0/ Max:100(Y축 고정)
3-3. 저장 (Apply)
우측 상단 Apply 버튼을 눌러 대시보드에 추가합니다.
🌡️ 4. 현재 상태 시각화 (Gauge)
이번에는 시계열이 아닌, “현재” 메모리 사용량을 자동차 속도계처럼 보여주는 Gauge 패널을 만듭니다.
4-1. 패널 추가
대시보드 상단 Add 버튼 → Visualization
4-2. 쿼리 작성
- Data source:
Prometheus - Query:
# 메모리 사용률 계산 (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100
4-3. 시각화 설정
- Visualization:
Gauge선택 - Title:
Memory Usage - Unit:
Percent (0-100) - Thresholds (임계값 색상):
- 80%: Yellow (주의)
- 90%: Red (위험) → 값이 높아지면 자동으로 색상이 변합니다!
📜 5. 실시간 로그 통합 (Logs)
메트릭만으로는 “왜” 문제가 발생했는지 알기 어렵습니다. Loki를 연동하여 로그를 바로 확인해봅시다.
5-1. 패널 추가
Add → Visualization
5-2. 쿼리 작성
- Data source:
Loki선택 - Query:
(참고: 03강에서 배포한{app="log-generator"}log-generator파드의 로그를 조회합니다)
5-3. 시각화 설정
- Visualization:
Logs선택 - Title:
Live Application Logs - Log styles:
Prettify JSON(가독성 향상)
🚨 6. 핵심 지표 강조 (Stat)
최근 5분 동안 발생한 ERROR 로그의 개수를 큼지막한 숫자로 표시하여 경각심을 줍시다.
6-1. 패널 추가
Add → Visualization
6-2. 쿼리 작성 (LogQL Aggregation)
- Data source:
Loki - Query:
# ERROR 문자열이 포함된 로그의 개수 집계 sum(count_over_time({app="log-generator"} |= "ERROR" [5m]))
6-3. 시각화 설정
- Visualization:
Stat선택 - Title:
Error Count (Last 5m) - Color mode:
Background(배경색 변경) - Thresholds:
- 1: Blue (발생 시작)
- 10: Red (심각)
💾 7. 대시보드 저장 및 정리
- 배치 조정: 패널의 모서리를 드래그하여 크기를 조절하고 원하는 위치로 옮깁니다.
- 추천 배치: 상단에
Stat과Gauge, 중간에Time Series, 하단에 넓게Logs.
- 추천 배치: 상단에
- 저장: 우측 상단 디스켓 아이콘(💾) 클릭.
- Name:
04 - My First Integrated Dashboard - Save 클릭.
- Name:
🎯 요약 및 다음 단계
이제 여러분은 Prometheus의 메트릭과 Loki의 로그를 한 화면에서 볼 수 있는 강력한 기초 대시보드를 가졌습니다.
하지만 현재 대시보드는 모든 노드와 모든 파드의 데이터를 보여줍니다. 특정 노드나 파드만 골라서 보고 싶다면 어떻게 해야 할까요? 쿼리를 매번 수정해야 할까요?
다음 장인 **05_동적_대시보드와_변수_활용**에서 드롭다운 메뉴 하나로 대시보드를 자유자재로 필터링하는 방법을 배웁니다.