1. Home
  2. Docs
  3. Architecture & scale
  4. Service health and observability
Architecture & scale

Service health and observability

What to monitor across Laravel, PostgreSQL, Redis, queues and the Go worker services.

Developer v2026.10 Updated 8 Nov 2026

Separate liveness from readiness

A running process is not necessarily ready for work. The current services expose different checks intentionally. For example, go-report has liveness and readiness endpoints; readiness verifies PostgreSQL, memory budget and free export disk before Laravel admits another heavy report.

Minimum operational signals

Monitor:

  • Web request latency and error rate.
  • PostgreSQL CPU, active connections, slow queries, locks, WAL/checkpoint pressure and disk growth.
  • Redis memory, evictions policy, queue depth and persistence health.
  • Horizon queue depth, failed jobs, job runtime and worker memory.
  • go-sync ready state, push queue depth, stale batches and retry rate.
  • go-report active/queued jobs, rows/bytes processed, memory and free disk.
  • go-dashboard outbox lag and projection freshness.
  • go-bulk-import stale operations and worker heartbeats.
  • go-xlsform resource rejections and processing duration.

Keep internal /metrics and worker health endpoints private. Feed them to a trusted monitoring layer rather than publishing them on the public internet.

Was this page helpful?

Still stuck?

Open a ticket and reference this page — we will pick it up from there.

Open a ticket