Skip to content

Observability

Endpoint Meaning
GET /healthz Liveness: the process is up
GET /readyz Readiness: dependencies reachable (database, NATS, cache, blob)

Every component exposes them on its listener. Use slipway healthcheck --url http://127.0.0.1:8080/healthz for container health checks in distroless images (no shell or curl).

Prometheus metrics are served at GET /metrics on every component (otel.prometheus, default on). With the Helm chart:

metrics:
serviceMonitor: { enabled: true, interval: 30s }

Signals worth alerting on:

Signal Why
Queue depth and oldest queued job age Runners are saturated or missing
Runner count by status offline runners; pool capacity
Lease expirations and runner_lost jobs Runner instability
API error rate and latency per method Control-plane health
Database pool saturation Connection limits
Webhook delivery failures Customer integrations failing
Deployment verification failures and rollbacks Release quality

OpenTelemetry traces and metrics can be exported to any OTLP/HTTP collector:

Terminal window
SLIPWAY_OTEL_EXPORTER=otlp
SLIPWAY_OTEL_ENDPOINT=http://otel-collector:4318
SLIPWAY_OTEL_SAMPLE_RATIO=0.1

Requests carry trace context through the interceptor chain, so a slow API call can be followed into the database.

Structured JSON on stdout (log.format: json, level via log.level). Secrets are never logged: configuration printing is redacted and the runner masks secrets before shipping job logs. Ship stdout with your usual agent (Fluent Bit, Vector, Promtail).

Job logs are a separate thing: they stream from runners to object storage and are served through the API, subject to your plan’s retention.

Business and above can stream the audit log to S3, Splunk or Datadog. Every plan has it in-app (30 days on Free). See Security and compliance.

Distinct from the above: Slipway can send deploy markers and read canary metrics from your observability tools. See Observability integrations.