summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmd/relay/main.go12
-rw-r--r--internal/metrics/metrics.go16
2 files changed, 18 insertions, 10 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)
diff --git a/internal/metrics/metrics.go b/internal/metrics/metrics.go
index 9030775..74f9ffb 100644
--- a/internal/metrics/metrics.go
+++ b/internal/metrics/metrics.go
@@ -288,12 +288,20 @@ const (
288//go:embed dashboard.html 288//go:embed dashboard.html
289var dashboardHTML []byte 289var dashboardHTML []byte
290 290
291func (m *Metrics) Serve(addr, path string) error { 291func (m *Metrics) PrometheusHandler() http.Handler {
292 mux := http.NewServeMux() 292 return promhttp.Handler()
293 mux.Handle(path, promhttp.Handler()) 293}
294 mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { 294
295func (m *Metrics) DashboardHandler() http.Handler {
296 return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
295 w.Header().Set("Content-Type", "text/html; charset=utf-8") 297 w.Header().Set("Content-Type", "text/html; charset=utf-8")
296 w.Write(dashboardHTML) 298 w.Write(dashboardHTML)
297 }) 299 })
300}
301
302func (m *Metrics) Serve(addr, path string) error {
303 mux := http.NewServeMux()
304 mux.Handle(path, m.PrometheusHandler())
305 mux.Handle("/", m.DashboardHandler())
298 return http.ListenAndServe(addr, mux) 306 return http.ListenAndServe(addr, mux)
299} 307}