Skip to content

Commit 6060073

Browse files
committed
우선 commit
1 parent 3917f27 commit 6060073

3 files changed

Lines changed: 374 additions & 16 deletions

File tree

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
- `docs/ZABBIX_AGENT_ACTIVE_SETUP.md`: PC/단말 Zabbix Agent Active 등록 가이드
2121
- `docs/TRIVY_USAGE.md`: Trivy 파일시스템/이미지 스캔 가이드
2222
- `docs/DEPLOYMENT.md`: 서버 배포/운영/트러블슈팅 가이드
23+
- `docs/FLEET_MACBOOK_ENROLLMENT_AND_TEST.md`: Fleet macOS 등록/검증/대시보드 확인 문서
2324

2425
## 1. 배포 목표
2526

@@ -74,6 +75,7 @@
7475
- `docs/SECURITY_CONTROL_MAPPING.md`: 보안 통제 매핑 문서
7576
- `docs/ZABBIX_AGENT_ACTIVE_SETUP.md`: Zabbix Agent 온보딩 문서
7677
- `docs/TRIVY_USAGE.md`: Trivy 활용 가이드
78+
- `docs/FLEET_MACBOOK_ENROLLMENT_AND_TEST.md`: Fleet macOS 등록/검증/대시보드 확인 문서
7779
- `.github/workflows/deploy.yml`: GitHub Actions 배포 워크플로우
7880
- `docs/DEPLOYMENT.md`: 서버 준비 및 운영 가이드
7981
- `config/zabbix_agent/zabbix_agent2.active.example.conf`: Active Agent 예시 설정

config/grafana/provisioning/dashboards/mori-overview.json

Lines changed: 206 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,218 @@
11
{
22
"annotations": {"list": []},
33
"editable": true,
4-
"graphTooltip": 0,
4+
"graphTooltip": 1,
55
"links": [],
66
"panels": [
77
{
88
"type": "text",
9-
"title": "Security Overview",
10-
"gridPos": {"h": 8, "w": 24, "x": 0, "y": 0},
9+
"title": "MORI SOC Overview",
10+
"gridPos": {"h": 7, "w": 24, "x": 0, "y": 0},
1111
"options": {
1212
"mode": "markdown",
13-
"content": "# MORI SOC-lite\n\n- Main Portal: `http://mori.rmstudio.co.kr:37854`\n- Grafana: `http://mori.rmstudio.co.kr:13000`\n- Zabbix Web: `http://mori.rmstudio.co.kr:18081`\n- Endpoint Security: FleetDM\n- Log Management: Loki + Fluent Bit\n- Security Event Detection: Wazuh\n- Vulnerability Scan: Trivy\n\n이 대시보드는 starter dashboard이며, 기능 정의서 기준 KPI 패널은 이후 단계에서 확장합니다."
13+
"content": "# MORI SOC-lite\n\n- Main Portal: `http://mori.rmstudio.co.kr:37854`\n- Grafana: `http://mori.rmstudio.co.kr:13000`\n- FleetDM: `http://mori.rmstudio.co.kr:1337`\n- Zabbix Web: `http://mori.rmstudio.co.kr:18081`\n- Wazuh Dashboard: `https://127.0.0.1:8443`\n\n이 MVP 대시보드는 **Loki + Fleet 로그 기반 한눈 보드**입니다.\n맥북 등록 후 Fleet에서 Live query 1회를 실행하면 아래 패널이 바로 살아납니다."
14+
}
15+
},
16+
{
17+
"type": "stat",
18+
"title": "Host log events (15m)",
19+
"gridPos": {"h": 4, "w": 6, "x": 0, "y": 7},
20+
"datasource": {"type": "loki", "uid": "loki"},
21+
"targets": [
22+
{
23+
"expr": "sum(count_over_time({job=\"fluent-bit\"}[15m]))",
24+
"queryType": "range",
25+
"refId": "A"
26+
}
27+
],
28+
"fieldConfig": {
29+
"defaults": {
30+
"color": {"mode": "thresholds"},
31+
"mappings": [],
32+
"thresholds": {
33+
"mode": "absolute",
34+
"steps": [
35+
{"color": "green", "value": null},
36+
{"color": "orange", "value": 1},
37+
{"color": "red", "value": 500}
38+
]
39+
}
40+
},
41+
"overrides": []
42+
},
43+
"options": {
44+
"colorMode": "value",
45+
"graphMode": "none",
46+
"justifyMode": "center",
47+
"orientation": "auto",
48+
"reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false},
49+
"textMode": "value_and_name"
50+
}
51+
},
52+
{
53+
"type": "stat",
54+
"title": "Fleet status events (15m)",
55+
"gridPos": {"h": 4, "w": 6, "x": 6, "y": 7},
56+
"datasource": {"type": "loki", "uid": "loki"},
57+
"targets": [
58+
{
59+
"expr": "sum(count_over_time({job=\"fleetdm\",log_type=\"status\"}[15m]))",
60+
"queryType": "range",
61+
"refId": "B"
62+
}
63+
],
64+
"fieldConfig": {
65+
"defaults": {
66+
"color": {"mode": "thresholds"},
67+
"mappings": [],
68+
"thresholds": {
69+
"mode": "absolute",
70+
"steps": [
71+
{"color": "blue", "value": null},
72+
{"color": "green", "value": 1},
73+
{"color": "orange", "value": 20}
74+
]
75+
}
76+
},
77+
"overrides": []
78+
},
79+
"options": {
80+
"colorMode": "value",
81+
"graphMode": "none",
82+
"justifyMode": "center",
83+
"orientation": "auto",
84+
"reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false},
85+
"textMode": "value_and_name"
86+
}
87+
},
88+
{
89+
"type": "stat",
90+
"title": "Fleet result events (15m)",
91+
"gridPos": {"h": 4, "w": 6, "x": 12, "y": 7},
92+
"datasource": {"type": "loki", "uid": "loki"},
93+
"targets": [
94+
{
95+
"expr": "sum(count_over_time({job=\"fleetdm\",log_type=\"result\"}[15m]))",
96+
"queryType": "range",
97+
"refId": "C"
98+
}
99+
],
100+
"fieldConfig": {
101+
"defaults": {
102+
"color": {"mode": "thresholds"},
103+
"mappings": [],
104+
"thresholds": {
105+
"mode": "absolute",
106+
"steps": [
107+
{"color": "gray", "value": null},
108+
{"color": "green", "value": 1},
109+
{"color": "orange", "value": 20}
110+
]
111+
}
112+
},
113+
"overrides": []
114+
},
115+
"options": {
116+
"colorMode": "value",
117+
"graphMode": "none",
118+
"justifyMode": "center",
119+
"orientation": "auto",
120+
"reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false},
121+
"textMode": "value_and_name"
122+
}
123+
},
124+
{
125+
"type": "stat",
126+
"title": "Fleet signal healthy?",
127+
"gridPos": {"h": 4, "w": 6, "x": 18, "y": 7},
128+
"datasource": {"type": "loki", "uid": "loki"},
129+
"targets": [
130+
{
131+
"expr": "sum(count_over_time({job=\"fleetdm\"}[15m]))",
132+
"queryType": "range",
133+
"refId": "D"
134+
}
135+
],
136+
"fieldConfig": {
137+
"defaults": {
138+
"color": {"mode": "thresholds"},
139+
"mappings": [
140+
{"options": {"0": {"text": "No recent signal"}}, "type": "value"}
141+
],
142+
"thresholds": {
143+
"mode": "absolute",
144+
"steps": [
145+
{"color": "red", "value": null},
146+
{"color": "green", "value": 1}
147+
]
148+
}
149+
},
150+
"overrides": []
151+
},
152+
"options": {
153+
"colorMode": "background",
154+
"graphMode": "none",
155+
"justifyMode": "center",
156+
"orientation": "auto",
157+
"reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false},
158+
"textMode": "value_and_name"
159+
}
160+
},
161+
{
162+
"type": "timeseries",
163+
"title": "Security telemetry volume",
164+
"gridPos": {"h": 8, "w": 24, "x": 0, "y": 11},
165+
"datasource": {"type": "loki", "uid": "loki"},
166+
"targets": [
167+
{
168+
"expr": "sum(count_over_time({job=\"fluent-bit\"}[5m]))",
169+
"legendFormat": "host logs",
170+
"queryType": "range",
171+
"refId": "E"
172+
},
173+
{
174+
"expr": "sum(count_over_time({job=\"fleetdm\",log_type=\"status\"}[5m]))",
175+
"legendFormat": "fleet status",
176+
"queryType": "range",
177+
"refId": "F"
178+
},
179+
{
180+
"expr": "sum(count_over_time({job=\"fleetdm\",log_type=\"result\"}[5m]))",
181+
"legendFormat": "fleet results",
182+
"queryType": "range",
183+
"refId": "G"
184+
}
185+
],
186+
"fieldConfig": {
187+
"defaults": {
188+
"color": {"mode": "palette-classic"},
189+
"custom": {
190+
"axisCenteredZero": false,
191+
"drawStyle": "line",
192+
"fillOpacity": 8,
193+
"lineWidth": 2,
194+
"showPoints": "never",
195+
"stacking": {"group": "A", "mode": "none"}
196+
},
197+
"mappings": []
198+
},
199+
"overrides": []
200+
},
201+
"options": {
202+
"legend": {"displayMode": "list", "placement": "bottom", "showLegend": true},
203+
"tooltip": {"mode": "single", "sort": "none"}
14204
}
15205
},
16206
{
17207
"type": "logs",
18-
"title": "Recent Host Logs",
19-
"gridPos": {"h": 12, "w": 12, "x": 0, "y": 8},
208+
"title": "Recent host logs",
209+
"gridPos": {"h": 12, "w": 8, "x": 0, "y": 19},
20210
"datasource": {"type": "loki", "uid": "loki"},
21211
"targets": [
22212
{
23213
"expr": "{job=\"fluent-bit\"}",
24214
"queryType": "range",
25-
"refId": "A"
215+
"refId": "H"
26216
}
27217
],
28218
"options": {
@@ -38,14 +228,14 @@
38228
},
39229
{
40230
"type": "logs",
41-
"title": "Fleet Status Logs",
42-
"gridPos": {"h": 12, "w": 12, "x": 12, "y": 8},
231+
"title": "Fleet status logs",
232+
"gridPos": {"h": 12, "w": 8, "x": 8, "y": 19},
43233
"datasource": {"type": "loki", "uid": "loki"},
44234
"targets": [
45235
{
46236
"expr": "{job=\"fleetdm\",log_type=\"status\"}",
47237
"queryType": "range",
48-
"refId": "B"
238+
"refId": "I"
49239
}
50240
],
51241
"options": {
@@ -61,14 +251,14 @@
61251
},
62252
{
63253
"type": "logs",
64-
"title": "Fleet osquery Results",
65-
"gridPos": {"h": 12, "w": 24, "x": 0, "y": 20},
254+
"title": "Fleet osquery results",
255+
"gridPos": {"h": 12, "w": 8, "x": 16, "y": 19},
66256
"datasource": {"type": "loki", "uid": "loki"},
67257
"targets": [
68258
{
69259
"expr": "{job=\"fleetdm\",log_type=\"result\"}",
70260
"queryType": "range",
71-
"refId": "C"
261+
"refId": "J"
72262
}
73263
],
74264
"options": {
@@ -86,10 +276,10 @@
86276
"refresh": "30s",
87277
"schemaVersion": 39,
88278
"style": "dark",
89-
"tags": ["mori", "soc-lite", "starter"],
279+
"tags": ["mori", "soc-lite", "overview", "loki", "fleet"],
90280
"templating": {"list": []},
91281
"time": {"from": "now-6h", "to": "now"},
92282
"timezone": "browser",
93-
"title": "MORI Security Overview",
94-
"version": 2
283+
"title": "MORI SOC Overview",
284+
"version": 3
95285
}

0 commit comments

Comments
 (0)