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" : {
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" : {
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" : {
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