Service-level indicators
Defined per surface in Health, metrics, and logs, grounded only in metrics confirmed to actually be written. Notifications has no indicator today — there is no delivery metric to build one from, stated there rather than invented here.Dashboards and alerts
Omniflow bundles no Prometheus or Grafana of its own, the same stance it takes on a reverse proxy: two maintained, optional artifacts live underdeploy/observability/ for you to import into your own monitoring stack.
deploy/observability/prometheus-alerts.yml— every bullet from Alerts worth having as a realalert:/expr:/for:rule. Thefor:durations are sensible defaults derived fromAPP_MAINTENANCE_FAILURE_STREAKandAPP_MAINTENANCE_PROBE_SECONDS’s own defaults — tune them to match your installation’s actual configuration if you’ve changed those.deploy/observability/grafana-dashboard.json— HTTP request rate, error rate, and latency; fulfillment job outcomes; payment settlement classifications; webhook signature failures; dependency health; and maintenance-mode state. Every panel is built from a metric Health, metrics, and logs confirms is actually written — nothing here queries a dead series.
promtool / Grafana’s dashboard import, pointed at
whatever scrapes /metrics on api and worker in your deployment.
External side effects: retries, dead letters, reconciliation
Graceful degradation
Capacity guidance
Omniflow ships as a single Docker Compose stack — see Deployment — and job concurrency (thecritical queue’s 16 workers) is compiled into
internal/jobs/client.go today, not an environment-configurable knob.
Capacity planning on a single host is therefore about giving PostgreSQL and
Valkey enough resources, not about tuning queue concurrency.
These are starting points for capacity planning, not a load-tested ceiling —
no throughput benchmark ships with the repository today. Watch the SLIs
above under your own traffic and adjust from there.
Related
Health, metrics, and logs
The probes, metrics, and alerts these SLIs and dashboards are built from.
Jobs and queues
Retry policy, the dead-letter view, and the transactional outbox in full.
Maintenance mode
What automatic detection watches and what it does when a window opens.
Backup, restore, and disaster recovery
The restore drill, and what a host-level disaster needs beyond it.