diff --git a/.env.example b/.env.example index f022fab5..fe6c634b 100644 --- a/.env.example +++ b/.env.example @@ -42,8 +42,8 @@ GODOXY_HTTPS_ADDR=:443 # API listening address GODOXY_API_ADDR=127.0.0.1:8888 -# Prometheus Metrics listening address (uncomment to enable) -#GODOXY_PROMETHEUS_ADDR=:8889 +# Prometheus Metrics +GODOXY_PROMETHEUS_ENABLED=true # Debug mode GODOXY_DEBUG=false \ No newline at end of file diff --git a/internal/api/handler.go b/internal/api/handler.go index db0eacde..afcc8756 100644 --- a/internal/api/handler.go +++ b/internal/api/handler.go @@ -3,9 +3,11 @@ package api import ( "net/http" + "github.com/prometheus/client_golang/prometheus/promhttp" v1 "github.com/yusing/go-proxy/internal/api/v1" "github.com/yusing/go-proxy/internal/api/v1/auth" "github.com/yusing/go-proxy/internal/api/v1/favicon" + "github.com/yusing/go-proxy/internal/common" config "github.com/yusing/go-proxy/internal/config/types" "github.com/yusing/go-proxy/internal/utils/strutils" ) @@ -36,6 +38,10 @@ func NewHandler(cfg config.ConfigInstance) http.Handler { mux.HandleFunc("GET", "/v1/favicon", auth.RequireAuth(favicon.GetFavIcon)) mux.HandleFunc("POST", "/v1/homepage/set", auth.RequireAuth(v1.SetHomePageOverrides)) + if common.PrometheusEnabled { + mux.Handle("GET /v1/metrics", promhttp.Handler()) + } + defaultAuth := auth.GetDefaultAuth() if defaultAuth != nil { mux.HandleFunc("GET", "/v1/auth/redirect", defaultAuth.RedirectLoginPage) diff --git a/internal/common/env.go b/internal/common/env.go index 4427816a..8191b8c7 100644 --- a/internal/common/env.go +++ b/internal/common/env.go @@ -38,11 +38,7 @@ var ( APIHTTPPort, APIHTTPURL = GetAddrEnv("API_ADDR", "127.0.0.1:8888", "http") - MetricsHTTPAddr, - MetricsHTTPHost, - MetricsHTTPPort, - MetricsHTTPURL = GetAddrEnv("PROMETHEUS_ADDR", "", "http") - PrometheusEnabled = MetricsHTTPURL != "" + PrometheusEnabled = GetEnvBool("PROMETHEUS_ENABLED", false) APIJWTSecret = decodeJWTKey(GetEnvString("API_JWT_SECRET", "")) APIJWTTokenTTL = GetDurationEnv("API_JWT_TOKEN_TTL", time.Hour) diff --git a/internal/config/config.go b/internal/config/config.go index aa8e07e8..8ea9ef21 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -15,7 +15,6 @@ import ( "github.com/yusing/go-proxy/internal/entrypoint" E "github.com/yusing/go-proxy/internal/error" "github.com/yusing/go-proxy/internal/logging" - "github.com/yusing/go-proxy/internal/metrics" "github.com/yusing/go-proxy/internal/net/http/server" "github.com/yusing/go-proxy/internal/notif" proxy "github.com/yusing/go-proxy/internal/route/provider" @@ -182,7 +181,7 @@ func (cfg *Config) StartProxyProviders() { } type StartServersOptions struct { - Proxy, API, Metrics bool + Proxy, API bool } func (cfg *Config) StartServers(opts ...*StartServersOptions) { @@ -207,14 +206,6 @@ func (cfg *Config) StartServers(opts ...*StartServersOptions) { Handler: api.NewHandler(cfg), }) } - if opt.Metrics && common.PrometheusEnabled { - server.StartServer(cfg.task, server.Options{ - Name: "metrics", - CertProvider: cfg.AutoCertProvider(), - HTTPAddr: common.MetricsHTTPAddr, - Handler: metrics.NewHandler(), - }) - } } func (cfg *Config) load() E.Error {