Skip to content

Commit

Permalink
Merge pull request #2482 from flant/profiling-endpoint
Browse files Browse the repository at this point in the history
feat: enable profiling endpoints
  • Loading branch information
nabokihms authored May 25, 2022
2 parents 957def7 + 6822ad9 commit 6da5187
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 0 deletions.
2 changes: 2 additions & 0 deletions cmd/dex/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
13 changes: 13 additions & 0 deletions cmd/dex/serve.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"fmt"
"net"
"net/http"
"net/http/pprof"
"os"
"runtime"
"strings"
Expand Down Expand Up @@ -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,
}
Expand Down Expand Up @@ -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 change: 1 addition & 0 deletions examples/config-dev.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down

0 comments on commit 6da5187

Please sign in to comment.