feat: add public status page with component health monitoring and system metrics visualization
Add statuspage package with service, handler, and types for exposing platform health. Implement GET /api/v1/status endpoint returning operational status, component health (API, database, gateway runtime), and control plane summary counts. Add Service.Snapshot method querying database connectivity, user/device/gateway/service/policy counts, connected device count via handshake timestamps, and gateway runtime tel
This commit is contained in:
@@ -17,6 +17,7 @@ import (
|
||||
"nexavpn/backend/internal/ipam"
|
||||
"nexavpn/backend/internal/policy"
|
||||
"nexavpn/backend/internal/servicecatalog"
|
||||
"nexavpn/backend/internal/statuspage"
|
||||
"nexavpn/backend/internal/user"
|
||||
)
|
||||
|
||||
@@ -46,6 +47,7 @@ func New(cfg config.Config) (*App, error) {
|
||||
gatewayService := gateway.NewService(gateway.NewPGRepository(pool))
|
||||
deviceService := device.NewService(device.NewPGRepository(pool), policyService, gatewayService, ipam.NewService())
|
||||
auditService := audit.NewService(audit.NewPGRepository(pool))
|
||||
statusService := statuspage.NewService(pool)
|
||||
|
||||
router := httpserver.NewRouter(cfg.JWTSecret, httpserver.Handlers{
|
||||
Auth: auth.NewHandler(authService, auditService),
|
||||
@@ -56,6 +58,7 @@ func New(cfg config.Config) (*App, error) {
|
||||
Policy: policy.NewHandler(policyService, auditService),
|
||||
Gateway: gateway.NewHandler(gatewayService, cfg.GatewayBootstrapToken),
|
||||
Audit: audit.NewHandler(auditService),
|
||||
Status: statuspage.NewHandler(statusService),
|
||||
})
|
||||
|
||||
return &App{
|
||||
|
||||
Reference in New Issue
Block a user