Skip to content

Commit aa11016

Browse files
wip
Signed-off-by: Patrick José Pereira <patrickelectric@gmail.com>
1 parent 495a63c commit aa11016

File tree

6 files changed

+809
-0
lines changed

6 files changed

+809
-0
lines changed

core/frontend/src/menus.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,13 @@ const menus = [
103103
text: 'Allows creating UDP/TCP to Serial bridges, used for communication to serial'
104104
+ ' devices from your Control Station Computer.',
105105
},
106+
{
107+
title: 'Service Manager',
108+
icon: 'mdi-cogs',
109+
route: '/tools/service-manager',
110+
advanced: true,
111+
text: 'View and manage BlueOS services. Monitor logs, metrics, and control service lifecycle.',
112+
},
106113
{
107114
title: 'System Information',
108115
icon: 'mdi-chart-pie',

core/frontend/src/router/index.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,11 @@ const routes: Array<RouteConfig> = [
138138
name: 'Zenoh Inspector',
139139
component: defineAsyncComponent(() => import('../views/ZenohInspectorView.vue')),
140140
},
141+
{
142+
path: '/tools/service-manager',
143+
name: 'Service Manager',
144+
component: defineAsyncComponent(() => import('../views/ServiceManagerView.vue')),
145+
},
141146
{
142147
path: '/settings',
143148
name: 'Settings',
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
export interface ServiceState {
2+
name: string
3+
status: 'running' | 'stopped' | 'starting' | 'stopping'
4+
pid: number | null
5+
exit_code: number | null
6+
started_at: string | null
7+
stopped_at: string | null
8+
restart_count: number
9+
uptime_seconds: number | null
10+
command: string[]
11+
enabled: boolean
12+
restart: boolean
13+
}
14+
15+
export interface LogLine {
16+
timestamp: string
17+
stream: 'stdout' | 'stderr'
18+
line: string
19+
}
20+
21+
export interface ServiceMetrics {
22+
timestamp: string
23+
cpu_percent: number
24+
memory_mb: number
25+
memory_peak_mb: number
26+
io_read_mb: number
27+
io_write_mb: number
28+
io_read_rate_mbps: number
29+
io_write_rate_mbps: number
30+
pids: number
31+
}
32+
33+
export interface ServicesResponse {
34+
services: ServiceState[]
35+
count: number
36+
}
37+
38+
export interface ServiceLogsResponse {
39+
service: string
40+
lines: LogLine[]
41+
count: number
42+
}
43+
44+
export interface AllMetricsResponse {
45+
metrics: Record<string, ServiceMetrics>
46+
count: number
47+
}
48+
49+
export interface ServiceMetricsResponse {
50+
service: string
51+
metrics: ServiceMetrics | null
52+
}
53+
54+
export interface MessageResponse {
55+
message: string
56+
}
57+
58+
export interface HealthResponse {
59+
status: string
60+
services_running: number
61+
services_total: number
62+
}

0 commit comments

Comments
 (0)