Observability
Octopus gives you four ways to see what the gateway is doing: a Prometheus metrics endpoint, structured logging, Kubernetes-style health probes, and a built-in admin dashboard with a JSON REST API.
This section is grounded in the gateway source. Where a configuration field exists but is not yet honoured by the runtime, it is called out explicitly so you do not build on a feature that is not there.
The four pillars at a glance01
| Pillar | Where it is served | Driven by config | Status |
| Metrics | /metrics on the gateway listen port | observability.metrics | Emitted; endpoint path is fixed (see Metrics). |
| Logging | stdout / stderr | observability.logging (level) and the --log-level flag | Level configurable; format/level wiring has caveats (see Logging). |
| Tracing | — | observability.tracing | Config type exists; not wired in the runtime (see Tracing). |
| Health probes | /livez /readyz /startupz on the gateway listen port | gateway.probes | Fully wired. |
| Admin dashboard + API | /admin on the gateway listen port | admin | Served; auth wiring has caveats (see Admin dashboard). |
Everything observable is served on the gateway listen port. There is no
separate metrics or admin port. Metrics, probes, and /admin* are matched
ahead of normal proxy routing.
Enabling each pillar02
A minimal observability block in your gateway config:
observability:
logging:
level: info
format: text
metrics:
enabled: true
endpoint: /metrics
tracing:
enabled: falseHealth probes are configured separately, under gateway.probes:
gateway:
probes:
enabled: true
liveness_path: /livez
readiness_path: /readyz
startup_path: /startupzThe admin dashboard is on by default and protected via the admin section:
admin:
auth_provider: dashboard-auth # name of an auth provider, optional
allowed_ips: [] # see the Admin dashboard page for caveatsFor the full field reference of each block, see Configuration → Observability, Configuration → Gateway, and Configuration → Admin.