diff --git a/internal/server/server.go b/internal/server/server.go index 28d7492..84836fe 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -26,7 +26,7 @@ type Server struct { apiKeys atomic.Pointer[map[string]struct{}] } -func New(cfg *config.Config, pool *auth.Pool, profile *proxy.SniffedProfile, tracker *ratelimit.Tracker) *Server { +func New(cfg *config.Config, pool *auth.Pool, profile *proxy.SniffedProfile, tracker *ratelimit.Tracker, metricsHandler http.Handler) *Server { s := &Server{configPath: "config.yaml"} san := proxy.NewSanitizer(cfg.Sanitize) @@ -39,7 +39,7 @@ func New(cfg *config.Config, pool *auth.Pool, profile *proxy.SniffedProfile, tra engine := gin.New() engine.Use(gin.Recovery()) engine.Use(corsMiddleware()) - if cfg.Telemetry.ExportEnabled() { + if cfg.Telemetry.Export.Enabled() { engine.Use(otelgin.Middleware(cfg.Telemetry.ServiceName)) } engine.Use(s.authMiddleware()) @@ -51,6 +51,10 @@ func New(cfg *config.Config, pool *auth.Pool, profile *proxy.SniffedProfile, tra engine.POST("/v1/messages", handler) engine.POST("/messages", handler) + if metricsHandler != nil { + engine.GET("/metrics", gin.WrapH(metricsHandler)) + } + engine.POST("/reload", s.handleReload()) engine.POST("/debug/refresh", handleDebugRefresh(pool)) engine.GET("/healthz", func(c *gin.Context) { @@ -137,7 +141,7 @@ func corsMiddleware() gin.HandlerFunc { func (s *Server) authMiddleware() gin.HandlerFunc { return func(c *gin.Context) { path := c.Request.URL.Path - if path == "/healthz" || path == "/reload" { + if path == "/healthz" || path == "/reload" || path == "/metrics" { c.Next() return }