Grafana Dashboard 설정
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": {
"type": "grafana",
"uid": "-- Grafana --"
},
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
}
]
},
"editable": false,
"fiscalYearStartMonth": 0,
"graphTooltip": 0,
"links": [],
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "d594a822-806b-41e9-8c74-135eb41505a2"
},
"gridPos": {
"h": 3,
"w": 24,
"x": 0,
"y": 0
},
"id": 1,
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "d594a822-806b-41e9-8c74-135eb41505a2"
},
"refId": "A"
}
],
"type": "welcome"
},
{
"datasource": {
"type": "prometheus",
"uid": "d594a822-806b-41e9-8c74-135eb41505a2"
},
"gridPos": {
"h": 9,
"w": 24,
"x": 0,
"y": 3
},
"id": 123123,
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "d594a822-806b-41e9-8c74-135eb41505a2"
},
"refId": "A"
}
],
"type": "gettingstarted"
},
{
"datasource": {
"type": "prometheus",
"uid": "d594a822-806b-41e9-8c74-135eb41505a2"
},
"gridPos": {
"h": 15,
"w": 12,
"x": 0,
"y": 12
},
"id": 3,
"links": [],
"options": {
"folderUID": "",
"includeVars": false,
"keepTime": false,
"maxItems": 30,
"query": "",
"showHeadings": true,
"showRecentlyViewed": true,
"showSearch": false,
"showStarred": true,
"tags": []
},
"pluginVersion": "10.3.3",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "d594a822-806b-41e9-8c74-135eb41505a2"
},
"refId": "A"
}
],
"title": "Dashboards",
"type": "dashlist"
},
{
"datasource": {
"type": "prometheus",
"uid": "d594a822-806b-41e9-8c74-135eb41505a2"
},
"gridPos": {
"h": 15,
"w": 12,
"x": 12,
"y": 12
},
"id": 4,
"links": [],
"options": {
"feedUrl": "https://grafana.com/blog/news.xml",
"showImage": true
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "d594a822-806b-41e9-8c74-135eb41505a2"
},
"refId": "A"
}
],
"title": "Latest from the blog",
"type": "news"
}
],
"refresh": "",
"schemaVersion": 39,
"tags": [],
"templating": {
"list": []
},
"time": {
"from": "now-6h",
"to": "now"
},
"timepicker": {
"hidden": true,
"refresh_intervals": [
"5s",
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
],
"time_options": [
"5m",
"15m",
"1h",
"6h",
"12h",
"24h",
"2d",
"7d",
"30d"
],
"type": "timepicker"
},
"timezone": "browser",
"title": "Home",
"version": 0,
"weekStart": ""
}
이 JSON은 Grafana 대시보드 설정 파일입니다. 구체적으로는 Grafana에서 “Home"이라는 이름의 기본 대시보드를 정의한 구성입니다. 아래에 주요 항목들을 설명드리겠습니다.
🔧 개요
- title:
"Home"– 대시보드의 이름 - schemaVersion:
39– Grafana에서 사용하는 JSON 스키마 버전 - editable:
false– 이 대시보드는 UI에서 수정할 수 없음 - timezone:
"browser"– 브라우저 시간대 기준으로 데이터 표시 - refresh:
""– 자동 새로고침 비활성화
🧩 Panels (패널들)
각 panel은 대시보드의 시각화 구성 요소를 의미합니다.
-
id: 1
type:"welcome"– 환영 패널 (보통 초기 설정에 표시됨)
-
id: 123123
type:"gettingstarted"– 시작 안내용 패널
-
id: 3
-
type:"dashlist"– 사용자 대시보드 목록 패널 -
options:showStarred:true– 즐겨찾기한 대시보드 보여줌showRecentlyViewed:true– 최근 본 대시보드 보여줌
-
-
id: 4
type:"news"– Grafana 블로그에서 가져오는 최신 소식 패널options.feedUrl:"https://grafana.com/blog/news.xml"
📊 데이터 소스
모든 패널은 Prometheus 데이터 소스를 사용하고 있습니다.
"datasource": {
"type": "prometheus",
"uid": "d594a822-806b-41e9-8c74-135eb41505a2"
}
🕒 시간 설정
- from:
"now-6h"– 6시간 전부터 - to:
"now"– 지금까지의 데이터 범위 - timepicker – 사용자가 선택 가능한 시간 옵션과 자동 새로고침 간격 설정
📌 Annotation 설정
- 기본 제공되는 “Annotations & Alerts” 설정이 포함되어 있음 (숨김 처리됨)
dashboard 내용 요약
물론입니다. 아래는 사용자가 나열한 Grafana Dashboard의 각 패널 항목들에 대한 상세 설명입니다. 이 항목들은 주로 JVM 기반 애플리케이션의 성능 모니터링, 시스템 리소스 사용량, DB 연결 상태, HTTP 요청 처리 현황, 그리고 로깅 수준별 통계를 추적하는 데 사용됩니다.
📊 Basic Statistics
1. Uptime
- 애플리케이션이나 시스템이 현재까지 연속으로 실행된 시간입니다.
- 장애 및 재시작 여부를 파악하는 데 유용합니다.
2. Heap Used
- JVM Heap 메모리 중 현재 사용 중인 메모리 양.
- 객체가 저장되는 주요 영역으로, GC가 가장 자주 일어나는 공간입니다.
3. Non-Heap Used
- JVM Non-Heap 메모리 중 사용 중인 양.
- 클래스 메타데이터, 코드 캐시 등 JVM 내부 구조가 저장됩니다.
4. Process Open Files
- 현재 프로세스에서 열고 있는 파일 디스크립터 수.
- 리소스 누수 여부나 설정 제한 확인에 유용합니다.
5. CPU Usages
- 프로세스 또는 시스템 전체의 CPU 사용률.
- 성능 병목 현상 진단 시 필수 정보입니다.
6. Load Average
- 시스템의 평균 부하 (일반적으로 1, 5, 15분 간격).
- CPU 및 I/O 병목을 파악할 수 있습니다.
🧠 JVM Statistics - Memory
7. G1 Eden Space (heap)
- 새 객체가 생성되는 공간. GC가 자주 발생합니다.
8. G1 Old Gen (heap)
- 장시간 살아남은 객체들이 저장되는 공간.
- Full GC의 대상입니다.
9. G1 Survivor Space (heap)
- Eden을 거쳐 살아남은 객체들이 일시 저장되는 공간입니다.
10. CodeHeap ’non-nmethods’ (non-heap)
- JVM이 네이티브 메서드가 아닌 코드를 저장하는 공간입니다.
11. CodeHeap ‘non-profiled nmethods’ (non-heap)
- 프로파일링되지 않은 네이티브 메서드 코드가 저장됩니다.
12. CodeHeap ‘profiled nmethods’ (non-heap)
- 프로파일링된 네이티브 메서드 코드 저장 공간.
13. Compressed Class Space (non-heap)
- 클래스 메타데이터가 저장되는 공간 (압축된 포맷).
14. Metaspace (non-heap)
- 클래스 메타데이터가 저장되는 공간. PermGen의 대체 영역입니다.
15. Threads
- 현재 JVM 내에서 실행 중인 스레드 수.
- 병렬성, 동시성, 데드락 등을 분석할 수 있습니다.
16. Direct Buffers
- Direct ByteBuffer가 사용하는 native 메모리 크기입니다.
17. Mapped Buffers
FileChannel.map()등으로 매핑된 메모리 버퍼의 상태입니다.
18. Memory Allocate/Promote
- Eden → Survivor → Old Gen으로 객체가 승격되는 메모리 흐름 통계.
♻️ JVM Statistics - GC
19. GC Count
- Garbage Collection 발생 횟수.
- Minor/Young GC, Major/Full GC 모두 포함 가능.
20. GC Stop the World Duration
- GC로 인해 애플리케이션이 일시 정지된 총 시간.
- 성능에 직접 영향을 주므로 매우 중요합니다.
🛢️ Database Connection Pool - HikariCP Statistics
21. Connections Size / Connection Timeout Count
- 현재 풀 크기 및 타임아웃 발생 횟수.
- 연결 부족 여부를 판단할 수 있습니다.
22. Connections
- 전체 커넥션 수, 사용 중인 커넥션 수, 유휴 커넥션 수 등의 세부 정보.
23. Connection Creation Time
- 새 DB 커넥션을 생성하는 데 걸린 시간.
24. Connection Usage Time
- 개별 커넥션이 사용된 시간 (평균, 최대 등).
25. Connection Acquire Time
- 커넥션 풀에서 커넥션을 얻는 데 걸리는 시간.
🌐 HTTP Statistics
26. Request Count
- 수신된 HTTP 요청 수.
- API 호출량, 트래픽을 판단하는 데 사용됩니다.
27. Response Time
- HTTP 응답 시간 (평균, 최대, 최소 등).
- 성능 지표 중 핵심입니다.
📜 Logback Statistics
28. INFO logs
- 일반적인 정보성 로그 수.
29. ERROR logs
- 시스템 오류 또는 예외 발생 시 로그된 수.
30. WARN logs
- 잠재적 문제나 주의가 필요한 상황.
31. DEBUG logs
- 디버깅 목적의 상세 로그.
32. TRACE logs
- 가장 상세한 수준의 로깅. 모든 호출 흐름 추적 가능.