feat(dashboard): Operations-Dashboard mit Live-Health/Resources/Audit/HAProxy
Vorher: Dashboard war Counts + statische Cards. Jetzt operativer Überblick — was läuft, was klemmt, was wurde gerade geändert. Backend (4 neue Endpoints): * GET /api/v1/system/services — systemctl is-active für 8 services (edgeguard-api, scheduler, haproxy, nftables, unbound, chrony, squid, postgresql). Inklusive ActiveEnterTimestamp. * GET /api/v1/system/resources — /proc/loadavg, meminfo, statfs(/), nf_conntrack count+max, uptime. * GET /api/v1/audit/recent?limit=N — letzte audit_log entries. audit-Repo bekommt ListRecent + Entry struct. * GET /api/v1/haproxy/stats — parsed haproxy 'show stat' CSV vom /run/haproxy/admin.sock (postinst addet edgeguard zu haproxy- group für socket-read; haproxy-group exists nach apt install). Frontend Dashboard rewrite: * PageHeader + KPI-Strip (6 tiles, wie zuvor) — bleibt. * Resources-Strip: Load (1/5/15) + Mem-Progress + Disk-Progress + Conntrack-Progress + Uptime. * Service-Health-Grid: 8 Karten mit StatusDot + state. * Recent-Activity-Card (audit-log): action-Tag + actor + subject + relative time. * HAProxy-Backends-Card: backend/server + UP/DOWN-Tag + sessions + bytes_in/out + last_change_age. * WireGuard live (handshake-age, traffic) — bleibt aus früherem Stand. * Cluster + Firewall + SSL + Routing Cards — bleiben. * Polling 10s für services/resources/haproxy, 15s für audit. Plus: postinst usermod -a -G haproxy edgeguard für admin.sock read-permission. Version 1.0.43. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -399,6 +399,25 @@
|
||||
"api": "API",
|
||||
"ifaces": "Interfaces",
|
||||
"wg": "WireGuard"
|
||||
},
|
||||
"servicesCard": {
|
||||
"title": "Service-Status (live, 10s)"
|
||||
},
|
||||
"activityCard": {
|
||||
"title": "Letzte Aktivität (Audit-Log)",
|
||||
"empty": "Noch keine Aktivität — Mutationen werden hier protokolliert."
|
||||
},
|
||||
"haproxyCard": {
|
||||
"title": "HAProxy-Backends (live)",
|
||||
"empty": "Keine Backend-Stats erreichbar (HAProxy down oder admin.sock-permission)."
|
||||
},
|
||||
"resCard": {
|
||||
"load": "Load",
|
||||
"memory": "Memory",
|
||||
"disk": "Disk /",
|
||||
"free": "frei",
|
||||
"conntrack": "Conntrack",
|
||||
"uptime": "Uptime"
|
||||
}
|
||||
},
|
||||
"ntp": {
|
||||
|
||||
@@ -399,6 +399,25 @@
|
||||
"api": "API",
|
||||
"ifaces": "Interfaces",
|
||||
"wg": "WireGuard"
|
||||
},
|
||||
"servicesCard": {
|
||||
"title": "Service status (live, 10s)"
|
||||
},
|
||||
"activityCard": {
|
||||
"title": "Recent activity (audit log)",
|
||||
"empty": "No activity yet — mutations are logged here."
|
||||
},
|
||||
"haproxyCard": {
|
||||
"title": "HAProxy backends (live)",
|
||||
"empty": "No backend stats reachable (HAProxy down or admin.sock permission)."
|
||||
},
|
||||
"resCard": {
|
||||
"load": "Load",
|
||||
"memory": "Memory",
|
||||
"disk": "Disk /",
|
||||
"free": "free",
|
||||
"conntrack": "Conntrack",
|
||||
"uptime": "Uptime"
|
||||
}
|
||||
},
|
||||
"ntp": {
|
||||
|
||||
Reference in New Issue
Block a user