Skip to content

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:

yaml
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_size and joobqui_queue_dead growing; joobqui_workers_registered at 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_truncated at 1 (more than 200 queues).
  • With an archive, joobqui_workflow_archive_failures above 0 (runs retention could not archive, and so did not delete).
  • GET /api/v1/workflow-builds reporting a set stalled, and GET /api/v1/workflow-scheduler reporting leader_alive: false when 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.

JoobQ Core is MIT licensed. JoobQ Pro needs a licence key.