Monitoring with FastJobs.Dashboard

FastJobs.Dashboard is an optional Blazor-based UI for monitoring and observing the state of your FastJobs system in real time. It surfaces job throughput, worker health, recurring job schedules, and upcoming scheduled jobs — all updated live via SignalR with periodic polling of the FastJobs engine.


Installation

dotnet add package FastJobs.Dashboard

Setup

Note: The dashboard requires a web host. It will not work in a console app or generic host without an HTTP pipeline.

Add the following using statement:

using FastJobs.Dashboard;

Register the dashboard services alongside FastJobs in your DI setup:

builder.Services.AddFastJobs(
    option => { option.WorkerCount = 4; },
    new FastJobMysqlDependencies(options => options.ConnectionString = connectionString)
);

builder.Services.AddFastjobsDashboard();

Then wire up the middleware and endpoints. The dashboard middleware must be registered before routing to allow internal path rewriting:

var app = builder.Build();

app.Services.UseFastJobs();
app.UseFastjobsDashboard("/Dashboard"); // must come before UseRouting()

app.UseStaticFiles();
app.UseRouting();
app.UseAntiforgery();

app.MapFastjobsDashboard();

The dashboard is now accessible at /Dashboard.


Pages

Overview

The overview page gives a high-level snapshot of the system’s current health at a glance.

Alt Overview

System health metrics

Metric Description
Enqueued Jobs currently waiting to be picked up by a worker
Succeeded Total jobs that completed successfully
Retrying Jobs that failed and are awaiting a retry attempt
Active workers Workers currently executing a job
Sleeping workers Workers that are idle and waiting for work
Dead workers Workers that have stopped responding

Throughput chart

An hourly bar chart comparing jobs enqueued vs. jobs completed. Use this to identify processing bottlenecks — a consistently growing gap between enqueued and completed bars indicates your worker count may need to be increased via option.WorkerCount.


Jobs

A paginated list of all jobs the system has processed or is currently tracking.

Alt Overview

Field Description
ID Unique job identifier
Job Name The job class name or lambda descriptor
Queue The queue the job was dispatched to
State Current state (Enqueued, Running, Succeeded, Failed, Retrying)
Created When the job was enqueued
Started When a worker began executing the job
Duration Total execution time
Attempts Number of execution attempts including retries

Filters: Queue, Job Type, Job State.


Workers

Shows the status and performance metrics for every worker in the pool. The worker count is configured via option.WorkerCount in AddFastJobs().

Alt Overview

Worker list

Field Description
Worker Name Internal worker identifier
State Active, Sleeping, or Dead
Queues Queues this worker listens on
Heartbeat Timestamp of the last heartbeat signal
Jobs Done Total jobs processed by this worker
Success % Percentage of jobs completed without error

Filters: Worker State.

Worker metrics summary

Aggregate efficiency stats across all workers:

Metric Description
Processed Total jobs processed across all workers
Failed Total jobs that exhausted all retry attempts
Avg Latency Average time between a job being enqueued and a worker picking it up
Success Rate Percentage of processed jobs that succeeded

Recurring Jobs

Lists all recurring jobs registered via AddRecurringJob(), whether cron-based or interval-based.

Alt Overview

Field Description
ID / Name Job identifier or registered name
Schedule Cron expression or interval definition
Queue Queue the job dispatches to
Status Whether the recurring job is active or paused
Next Run Timestamp of the next scheduled execution
Last Run Timestamp of the most recent execution
✓ Runs Total successful executions
✗ Fails Total failed executions

Filters: Job Type (Cron or Interval), Status.


Scheduled Jobs

Lists all one-off delayed jobs registered via ScheduleJob(), as well as the individual scheduled instances generated by recurring jobs.

Alt Overview

Field Description
ID Unique identifier for the scheduled job instance
Job Name The job class name or lambda descriptor
Method Execution method (concrete class or lambda)
Queue Target queue
Enqueue At The datetime the job is scheduled to be enqueued
Time Until Countdown to the enqueue time
Created When the schedule was registered
Source Whether this was a one-off schedule or generated by a recurring job

Filters: Source (One-off or Recurring).


Real-time Updates

The dashboard uses Blazor with SignalR for live updates. Job state changes, worker heartbeats, and throughput metrics are pushed to the UI as they happen, without requiring a page refresh. A periodic polling fallback ensures the dashboard stays consistent even if the SignalR connection is briefly interrupted.


This site uses Just the Docs, a documentation theme for Jekyll.