Monitoring
Metrics
GET /metrics is Prometheus text. It needs a bearer token or session with at least the viewer role; give Prometheus a viewer token (Access page, or HASH:viewer in JOOBQUI_API_TOKENS) and scrape every instance:
scrape_configs:
- job_name: joobqui
metrics_path: /metrics
scheme: https
authorization: { type: Bearer, credentials: jq_... }
static_configs: [{ targets: ["queues.example.com"] }]Series: joobqui_queue_size|processing|dead|paused|concurrency{queue}, joobqui_jobs_processed_total{queue}, joobqui_job_duration_seconds{queue}, joobqui_workers_registered, joobqui_leader{role}, joobqui_workflows{status}, joobqui_workflow_archived_total and joobqui_workflow_archive_failures (only with an archive), joobqui_api_requests_total, joobqui_api_request_duration_seconds, joobqui_metrics_truncated, joobqui_build_info, joobqui_process_start_time_seconds. At most 200 queues are listed per scrape; the request counters are per instance. On a self-hosted server /metrics answers 402 paid_license_required while the licence is lapsed.
What to watch
joobqui_queue_sizeandjoobqui_queue_deadgrowing;joobqui_workers_registeredat 0 (no worker alive).joobqui_leader{role="alerts"}summing to 0, or to more than 1, across instances for longer than a minute.joobqui_api_requests_total{status_class="5xx"};joobqui_metrics_truncatedat 1 (more than 200 queues).- With an archive,
joobqui_workflow_archive_failuresabove 0 (runs retention could not archive, and so did not delete). GET /api/v1/workflow-buildsreporting a setstalled, andGET /api/v1/workflow-schedulerreportingleader_alive: falsewhen you rely on workflow schedules.
In the console
The console's overview shows throughput and latency percentiles (GET /api/v1/telemetry/summary); the latency percentiles need a Pro key (the capability flags latency_percentiles and latency_by_queue are off without one). Alert rules turn these signals into notifications.