From 0d518166eeca91e6a0e8b630a9ff7eaac5f98153 Mon Sep 17 00:00:00 2001 From: yusing Date: Sat, 1 Feb 2025 02:09:43 +0800 Subject: [PATCH] api: move prometheus handler inside api handler /v1/metrics --- .env.example | 4 ++-- internal/api/handler.go | 6 ++++++ internal/common/env.go | 6 +----- internal/config/config.go | 11 +---------- 4 files changed, 10 insertions(+), 17 deletions(-) diff --git a/.env.example b/.env.example index f022fab..fe6c634 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 db0eacd..afcc875 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 4427816..8191b8c 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 aa8e07e..8ea9ef2 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 {