Observability and control plane
The proxy’s client listener is separate from the admin API, Prometheus endpoint, and optional Web UI. Keep all management addresses on loopback.
Logs and metrics
admin:
enabled: true
address: "127.0.0.1:9090"
observability:
metrics: { enabled: true, address: "127.0.0.1:9091" }
access_log: { enabled: true }
log_level: "info,omlb_proxy=info"
log_format: journald
webui:
enabled: true
address: "127.0.0.1:9095"
token_file: /run/secrets/omlb-webui-token
capture_logs: true
log_buffer: 2000
sample_interval: 2s
series_len: 300 access_log.enabled controls request logging. log_format supports pretty, newline-delimited json, and journald; journald falls back to pretty when its socket is unavailable. The process log filter is the observability.log_level tracing directive.
Metrics are Prometheus text exposition at /metrics. The dedicated metrics listener and the admin API both expose that path. They accept only loopback bind addresses at runtime, so use a local Prometheus agent or a protected tunnel rather than exposing them publicly.
Admin API
# Local health and live topology
curl http://127.0.0.1:9090/healthz
curl http://127.0.0.1:9090/status
# Prometheus text exposition (also available from the admin listener)
curl http://127.0.0.1:9091/metrics
curl http://127.0.0.1:9090/metrics
# A safe operational action for one known static backend
curl -X POST http://127.0.0.1:9090/pools/api/backends/10.0.0.11:8080/drain The local, unauthenticated admin API provides /healthz, /status, /metrics, /plugins, /reload, and backend drain/undrain operations. /status shows the current pools, backend readiness/ejection state, routes, plugins, and configured listener addresses. It is a control plane: never publish it through a public route.
Optional Web UI
The Web UI is disabled by default and listens separately. It shows telemetry, configuration, pools, routes, and optionally a bounded in-memory log ring. capture_logs: true adds work on the request logging path; leave it off unless a live log view is needed. The Web UI’s configuration writes use a YAML overlay and observe the same validation and hot-reload restrictions as a file reload.
A non-loopback Web UI requires an absolute bearer-token file. On loopback, add a token anyway when more than one local principal can reach the port. Its API is distinct from the unauthenticated admin API.