Skip to content

Commit 7f6dae6

Browse files
authored
feat: 그라파나 대시보드 코드화 및 단일 서버 모니터링 환경 구축 (#216)
1 parent 2599ed0 commit 7f6dae6

6 files changed

Lines changed: 517 additions & 0 deletions

File tree

docker-compose-monitoring.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ services:
2626
- "3000:3000"
2727
volumes:
2828
- ./grafana-data:/var/lib/grafana
29+
- ./prometheus-grafana/grafana/provisioning:/etc/grafana/provisioning
30+
- ./prometheus-grafana/grafana/dashboards:/var/lib/grafana/dashboards:ro # 읽기 전용 마운트
2931
environment:
3032
- GF_SECURITY_ADMIN_PASSWORD=admin
3133
networks:
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
{
2+
"annotations": {
3+
"list": [
4+
{
5+
"builtIn": 1,
6+
"datasource": {
7+
"type": "grafana",
8+
"uid": "-- Grafana --"
9+
},
10+
"enable": true,
11+
"hide": true,
12+
"iconColor": "rgba(0, 211, 255, 1)",
13+
"name": "Annotations & Alerts",
14+
"type": "dashboard"
15+
}
16+
]
17+
},
18+
"editable": true,
19+
"fiscalYearStartMonth": 0,
20+
"graphTooltip": 0,
21+
"id": null,
22+
"links": [],
23+
"panels": [
24+
{
25+
"datasource": {
26+
"type": "prometheus",
27+
"uid": "prometheus-default"
28+
},
29+
"description": "독립 서버(Baseline)의 스레드 점유 상태를 집중 모니터링합니다.",
30+
"fieldConfig": {
31+
"defaults": {
32+
"color": { "mode": "palette-classic" },
33+
"custom": {
34+
"axisPlacement": "auto",
35+
"drawStyle": "line",
36+
"fillOpacity": 10,
37+
"lineInterpolation": "linear",
38+
"lineWidth": 2,
39+
"pointSize": 5,
40+
"showPoints": "never"
41+
},
42+
"mappings": [],
43+
"min": 0,
44+
"unit": "short"
45+
}
46+
},
47+
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 0 },
48+
"id": 1,
49+
"options": {
50+
"legend": { "calcs": ["lastNotNull", "max"], "displayMode": "table", "placement": "bottom" },
51+
"tooltip": { "mode": "multi" }
52+
},
53+
"pluginVersion": "11.5.2",
54+
"targets": [
55+
{
56+
"expr": "tomcat_threads_busy_threads{env=\"baseline\"}",
57+
"legendFormat": "Busy Threads",
58+
"refId": "A"
59+
},
60+
{
61+
"expr": "tomcat_threads_config_max_threads{env=\"baseline\"}",
62+
"legendFormat": "Max Threads",
63+
"refId": "B"
64+
}
65+
],
66+
"title": "[Baseline] Tomcat Thread Status",
67+
"type": "timeseries"
68+
},
69+
{
70+
"datasource": {
71+
"type": "prometheus",
72+
"uid": "prometheus-default"
73+
},
74+
"description": "DB 커넥션 풀 고갈 여부를 확인합니다. Pending 발생 시 주의가 필요합니다.",
75+
"fieldConfig": {
76+
"defaults": {
77+
"color": { "mode": "palette-classic" },
78+
"custom": { "lineWidth": 2, "fillOpacity": 10 },
79+
"unit": "short"
80+
}
81+
},
82+
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 0 },
83+
"id": 2,
84+
"options": {
85+
"legend": { "calcs": ["lastNotNull", "max"], "displayMode": "table", "placement": "bottom" }
86+
},
87+
"targets": [
88+
{
89+
"expr": "hikaricp_connections_active{env=\"baseline\"}",
90+
"legendFormat": "Active Connections",
91+
"refId": "A"
92+
},
93+
{
94+
"expr": "hikaricp_connections_pending{env=\"baseline\"}",
95+
"legendFormat": "Pending Connections",
96+
"refId": "B"
97+
}
98+
],
99+
"title": "[Baseline] HikariCP Connection Pool",
100+
"type": "timeseries"
101+
},
102+
{
103+
"datasource": {
104+
"type": "prometheus",
105+
"uid": "prometheus-default"
106+
},
107+
"fieldConfig": {
108+
"defaults": {
109+
"color": { "mode": "palette-classic" },
110+
"custom": { "lineWidth": 2 },
111+
"unit": "s"
112+
}
113+
},
114+
"gridPos": { "h": 8, "w": 24, "x": 0, "y": 8 },
115+
"id": 3,
116+
"targets": [
117+
{
118+
"expr": "rate(http_server_requests_seconds_sum{env=\"baseline\"}[1m]) / rate(http_server_requests_seconds_count{env=\"baseline\"}[1m])",
119+
"legendFormat": "{{uri}}",
120+
"refId": "A"
121+
}
122+
],
123+
"title": "[Baseline] Average Response Time by URI",
124+
"type": "timeseries"
125+
}
126+
],
127+
"refresh": "5s",
128+
"schemaVersion": 40,
129+
"time": { "from": "now-15m", "to": "now" },
130+
"title": "TrainUs Baseline Dashboard (Single Node)",
131+
"uid": "trainus-baseline-v1",
132+
"version": 1
133+
}

0 commit comments

Comments
 (0)