mirror of
https://github.com/fatedier/frp.git
synced 2026-10-20 10:23:39 +08:00
feat: add metricsServer for health checks, metrics and pprof (#5578)
Add a separate HTTP listener for observability, configured through metricsServer in both frps and frpc. It serves /healthz and, when pprofEnable is set, the pprof handlers except /debug/pprof/cmdline. It never serves the dashboard, static assets or the admin API, and it does not touch the global assets filesystem. frps also serves /metrics on this listener with both runtime and business metrics, enabled by metricsServer.port alone. The in-memory collector still starts only with the dashboard, and the Prometheus collector starts either with metricsServer or with enablePrometheus plus webServer, so a configuration that collected nothing before still collects nothing. The /healthz, /metrics and pprof endpoints on webServer, and enablePrometheus, keep working but are deprecated and log a hint at startup. frpc does not serve /metrics yet.
This commit is contained in:
@@ -79,9 +79,22 @@ webServer.password = "admin"
|
||||
# Admin assets directory. By default, these assets are bundled with frpc.
|
||||
# webServer.assetsDir = "./static"
|
||||
|
||||
# Deprecated: use metricsServer.pprofEnable for authenticated profiling.
|
||||
# Enable golang pprof handlers in admin listener.
|
||||
webServer.pprofEnable = false
|
||||
|
||||
# Separate health and optional profiling listener. frpc does not serve /metrics.
|
||||
# Port 0 disables it. The default address only accepts local connections.
|
||||
metricsServer.addr = "127.0.0.1"
|
||||
metricsServer.port = 0
|
||||
# Credentials and TLS are independent of webServer; /healthz stays anonymous.
|
||||
# metricsServer.user = "monitor"
|
||||
# metricsServer.password = "change-me"
|
||||
# metricsServer.tls.certFile = "metrics.crt"
|
||||
# metricsServer.tls.keyFile = "metrics.key"
|
||||
# Profiling requires explicit opt-in, uses the above credentials, and excludes cmdline.
|
||||
metricsServer.pprofEnable = false
|
||||
|
||||
# The maximum amount of time a dial to server will wait for a connect to complete. Default value is 10 seconds.
|
||||
# transport.dialServerTimeout = 10
|
||||
|
||||
|
||||
Reference in New Issue
Block a user