Browse Source

Merge pull request #2482 from flant/profiling-endpoint

feat: enable profiling endpoints
pull/2538/head
Maksim Nabokikh 4 years ago committed by GitHub
parent
commit
6da5187b47
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      cmd/dex/config.go
  2. 13
      cmd/dex/serve.go
  3. 1
      examples/config-dev.yaml

2
cmd/dex/config.go

@ -151,6 +151,8 @@ type Web struct {
// Telemetry is the config format for telemetry including the HTTP server config.
type Telemetry struct {
HTTP string `json:"http"`
// EnableProfiling makes profiling endpoints available via web interface host:port/debug/pprof/
EnableProfiling bool `json:"enableProfiling"`
}
// GRPC is the config for the gRPC API.

13
cmd/dex/serve.go

@ -8,6 +8,7 @@ import (
"fmt"
"net"
"net/http"
"net/http/pprof"
"os"
"runtime"
"strings"
@ -368,6 +369,10 @@ func runServe(options serveOptions) error {
return fmt.Errorf("listening (%s) on %s: %v", name, c.Telemetry.HTTP, err)
}
if c.Telemetry.EnableProfiling {
pprofHandler(telemetryRouter)
}
server := &http.Server{
Handler: telemetryRouter,
}
@ -550,3 +555,11 @@ func applyConfigOverrides(options serveOptions, config *Config) {
config.Frontend.Dir = os.Getenv("DEX_FRONTEND_DIR")
}
}
func pprofHandler(router *http.ServeMux) {
router.HandleFunc("/debug/pprof/", pprof.Index)
router.HandleFunc("/debug/pprof/cmdline", pprof.Cmdline)
router.HandleFunc("/debug/pprof/profile", pprof.Profile)
router.HandleFunc("/debug/pprof/symbol", pprof.Symbol)
router.HandleFunc("/debug/pprof/trace", pprof.Trace)
}

1
examples/config-dev.yaml

@ -63,6 +63,7 @@ web:
# Configuration for telemetry
telemetry:
http: 0.0.0.0:5558
# enableProfiling: true
# Uncomment this block to enable the gRPC API. This values MUST be different
# from the HTTP endpoints.

Loading…
Cancel
Save