diff options
| author | bndw <ben@bdw.to> | 2026-02-14 12:19:29 -0800 |
|---|---|---|
| committer | bndw <ben@bdw.to> | 2026-02-14 12:19:29 -0800 |
| commit | eb666af39feed4be9c8c1354cf52d0ea38ab5d36 (patch) | |
| tree | c6488b73333882a6a245c0cd24157d2889a95639 /cmd/relay | |
| parent | 865b3da22881a1046c15e99bdd5fbc64aa374b73 (diff) | |
refactor: serve metrics on main HTTP port instead of separate port
Move metrics dashboard and Prometheus endpoint to the main HTTP server
for simplified deployment and single ingress configuration.
Changes:
- Add PrometheusHandler() and DashboardHandler() methods to Metrics
- Serve /dashboard on main HTTP port (was root on separate port)
- Serve /metrics on main HTTP port (was /metrics on separate port)
- Remove separate metrics server goroutine
- Update logging to show metrics paths on main HTTP port
Benefits:
- Single port/ingress needed for all HTTP traffic
- Simpler reverse proxy configuration
- Dashboard accessible alongside main relay endpoints
Endpoints on port 8080:
- / - WebSocket/index
- /nostr.v1.NostrRelay/* - Connect (gRPC-Web)
- /dashboard - Metrics dashboard (HTML)
- /metrics - Prometheus metrics (text)
Diffstat (limited to 'cmd/relay')
| -rw-r--r-- | cmd/relay/main.go | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/cmd/relay/main.go b/cmd/relay/main.go index 209d758..bd50e63 100644 --- a/cmd/relay/main.go +++ b/cmd/relay/main.go | |||
| @@ -85,12 +85,8 @@ func main() { | |||
| 85 | grpc.ChainStreamInterceptor(metrics.StreamServerInterceptor(m)), | 85 | grpc.ChainStreamInterceptor(metrics.StreamServerInterceptor(m)), |
| 86 | ) | 86 | ) |
| 87 | 87 | ||
| 88 | go func() { | 88 | mux.Handle("/metrics", m.PrometheusHandler()) |
| 89 | log.Printf("Metrics server listening on %s%s", cfg.Metrics.Addr, cfg.Metrics.Path) | 89 | mux.Handle("/dashboard", m.DashboardHandler()) |
| 90 | if err := m.Serve(cfg.Metrics.Addr, cfg.Metrics.Path); err != nil { | ||
| 91 | log.Printf("Metrics server failed: %v", err) | ||
| 92 | } | ||
| 93 | }() | ||
| 94 | } | 90 | } |
| 95 | 91 | ||
| 96 | wsHandler := wshandler.NewHandler(store, subManager) | 92 | wsHandler := wshandler.NewHandler(store, subManager) |
| @@ -127,6 +123,10 @@ func main() { | |||
| 127 | log.Printf("HTTP server listening on %s", cfg.Server.HttpAddr) | 123 | log.Printf("HTTP server listening on %s", cfg.Server.HttpAddr) |
| 128 | log.Printf(" - Connect (gRPC-Web) at %s/nostr.v1.NostrRelay/*", cfg.Server.HttpAddr) | 124 | log.Printf(" - Connect (gRPC-Web) at %s/nostr.v1.NostrRelay/*", cfg.Server.HttpAddr) |
| 129 | log.Printf(" - WebSocket (Nostr) at %s/", cfg.Server.HttpAddr) | 125 | log.Printf(" - WebSocket (Nostr) at %s/", cfg.Server.HttpAddr) |
| 126 | if cfg.Metrics.Enabled { | ||
| 127 | log.Printf(" - Metrics dashboard at %s/dashboard", cfg.Server.HttpAddr) | ||
| 128 | log.Printf(" - Prometheus metrics at %s/metrics", cfg.Server.HttpAddr) | ||
| 129 | } | ||
| 130 | log.Printf("Database: %s", cfg.Database.Path) | 130 | log.Printf("Database: %s", cfg.Database.Path) |
| 131 | if cfg.Auth.Read.Enabled || cfg.Auth.Write.Enabled { | 131 | if cfg.Auth.Read.Enabled || cfg.Auth.Write.Enabled { |
| 132 | log.Printf("Auth: enabled (read=%v write=%v)", cfg.Auth.Read.Enabled, cfg.Auth.Write.Enabled) | 132 | log.Printf("Auth: enabled (read=%v write=%v)", cfg.Auth.Read.Enabled, cfg.Auth.Write.Enabled) |
