mirror of
https://github.com/umputun/reproxy.git
synced 2025-02-16 18:34:30 +02:00
eliminate metrics middleware hit if mgmt disabled
This commit is contained in:
parent
f043a91dca
commit
971e77b5d3
9
Makefile
9
Makefile
@ -20,18 +20,13 @@ race_test:
|
|||||||
build: info
|
build: info
|
||||||
- cd app && GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -ldflags "-X main.revision=$(REV) -s -w" -o ../dist/reproxy
|
- cd app && GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -ldflags "-X main.revision=$(REV) -s -w" -o ../dist/reproxy
|
||||||
|
|
||||||
site: build_site deploy_site
|
site:
|
||||||
|
|
||||||
build_site:
|
|
||||||
@rm -f site/public/*
|
@rm -f site/public/*
|
||||||
docker build -f Dockerfile.site -t reproxy.site .
|
docker build -f Dockerfile.site -t reproxy.site .
|
||||||
docker run -d --name=reproxy.site reproxy.site
|
docker run -d --name=reproxy.site reproxy.site
|
||||||
docker cp reproxy.site:/build/public site/
|
docker cp reproxy.site:/build/public site/
|
||||||
docker rm -f reproxy.site
|
docker rm -f reproxy.site
|
||||||
|
rsync -avz -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress ./site/public/ reproxy.io:/srv/www/reproxy.io
|
||||||
deploy_site:
|
|
||||||
rsync -avz -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress \
|
|
||||||
./site/public/ reproxy.io:/srv/www/reproxy.io
|
|
||||||
|
|
||||||
info:
|
info:
|
||||||
- @echo "revision $(REV)"
|
- @echo "revision $(REV)"
|
||||||
|
32
app/main.go
32
app/main.go
@ -188,22 +188,24 @@ func run() error {
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
metrics := mgmt.NewMetrics()
|
var metrics *mgmt.Metrics // disabled by default
|
||||||
go func() {
|
if opts.Management.Enabled {
|
||||||
mgSrv := mgmt.Server{
|
metrics = mgmt.NewMetrics()
|
||||||
Listen: opts.Management.Listen,
|
go func() {
|
||||||
Informer: svc,
|
mgSrv := mgmt.Server{
|
||||||
AssetsLocation: opts.Assets.Location,
|
Listen: opts.Management.Listen,
|
||||||
AssetsWebRoot: opts.Assets.WebRoot,
|
Informer: svc,
|
||||||
Version: revision,
|
AssetsLocation: opts.Assets.Location,
|
||||||
Metrics: metrics,
|
AssetsWebRoot: opts.Assets.WebRoot,
|
||||||
}
|
Version: revision,
|
||||||
if opts.Management.Enabled {
|
|
||||||
if mgErr := mgSrv.Run(ctx); err != nil {
|
|
||||||
log.Printf("[WARN] management service failed, %v", mgErr)
|
|
||||||
}
|
}
|
||||||
}
|
if opts.Management.Enabled {
|
||||||
}()
|
if mgErr := mgSrv.Run(ctx); err != nil {
|
||||||
|
log.Printf("[WARN] management service failed, %v", mgErr)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
|
||||||
cacheControl, err := proxy.MakeCacheControl(opts.Assets.CacheControl)
|
cacheControl, err := proxy.MakeCacheControl(opts.Assets.CacheControl)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -25,7 +25,7 @@ func Test_Main(t *testing.T) {
|
|||||||
"--static.rule=*,/svc2/(.*), https://echo.umputun.com/$1,https://feedmaster.umputun.com/ping",
|
"--static.rule=*,/svc2/(.*), https://echo.umputun.com/$1,https://feedmaster.umputun.com/ping",
|
||||||
"--file.enabled", "--file.name=discovery/provider/testdata/config.yml",
|
"--file.enabled", "--file.name=discovery/provider/testdata/config.yml",
|
||||||
"--dbg", "--logger.enabled", "--logger.stdout", "--logger.file=/tmp/reproxy.log",
|
"--dbg", "--logger.enabled", "--logger.stdout", "--logger.file=/tmp/reproxy.log",
|
||||||
"--listen=127.0.0.1:" + strconv.Itoa(port), "--signature",
|
"--listen=127.0.0.1:" + strconv.Itoa(port), "--signature", "--mgmt.enabled",
|
||||||
"--error.enabled", "--error.template=proxy/testdata/errtmpl.html",
|
"--error.enabled", "--error.template=proxy/testdata/errtmpl.html",
|
||||||
}
|
}
|
||||||
defer os.Remove("/tmp/reproxy.log")
|
defer os.Remove("/tmp/reproxy.log")
|
||||||
|
@ -7,6 +7,7 @@ import (
|
|||||||
|
|
||||||
log "github.com/go-pkgz/lgr"
|
log "github.com/go-pkgz/lgr"
|
||||||
"github.com/go-pkgz/rest"
|
"github.com/go-pkgz/rest"
|
||||||
|
|
||||||
"github.com/umputun/reproxy/app/discovery"
|
"github.com/umputun/reproxy/app/discovery"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@ import (
|
|||||||
"github.com/gorilla/handlers"
|
"github.com/gorilla/handlers"
|
||||||
|
|
||||||
"github.com/umputun/reproxy/app/discovery"
|
"github.com/umputun/reproxy/app/discovery"
|
||||||
|
"github.com/umputun/reproxy/app/mgmt"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Http is a proxy server for both http and https
|
// Http is a proxy server for both http and https
|
||||||
@ -104,7 +105,7 @@ func (h *Http) Run(ctx context.Context) error {
|
|||||||
h.signatureHandler(),
|
h.signatureHandler(),
|
||||||
h.pingHandler,
|
h.pingHandler,
|
||||||
h.healthMiddleware,
|
h.healthMiddleware,
|
||||||
h.Metrics.Middleware,
|
h.mgmtHandler(),
|
||||||
h.headersHandler(h.ProxyHeaders),
|
h.headersHandler(h.ProxyHeaders),
|
||||||
h.accessLogHandler(h.AccessLog),
|
h.accessLogHandler(h.AccessLog),
|
||||||
h.stdoutLogHandler(h.StdOutEnabled, logger.New(logger.Log(log.Default()), logger.Prefix("[INFO]")).Handler),
|
h.stdoutLogHandler(h.StdOutEnabled, logger.New(logger.Log(log.Default()), logger.Prefix("[INFO]")).Handler),
|
||||||
@ -394,7 +395,18 @@ func (h *Http) maxReqSizeHandler(maxSize int64) func(next http.Handler) http.Han
|
|||||||
}
|
}
|
||||||
return http.HandlerFunc(fn)
|
return http.HandlerFunc(fn)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *Http) mgmtHandler() func(next http.Handler) http.Handler {
|
||||||
|
if h.Metrics.(*mgmt.Metrics) != nil { // type assertion needed because we compare interface to nil
|
||||||
|
log.Printf("[DEBUG] metrics enabled")
|
||||||
|
return h.Metrics.Middleware
|
||||||
|
}
|
||||||
|
return func(next http.Handler) http.Handler {
|
||||||
|
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
next.ServeHTTP(w, r)
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *Http) makeHTTPServer(addr string, router http.Handler) *http.Server {
|
func (h *Http) makeHTTPServer(addr string, router http.Handler) *http.Server {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user