At a glance
An alert that fires when more than 5 Databricks job runs reach aFAILED(orTIMEDOUT) terminal state within a rolling 1-hour window. This card is Databricks-distinctive: pipeline failures cascade fast. One broken upstream table or one expired token can fail every dependent job in minutes, so a single root cause can produce a burst of five, ten, or twenty failures almost simultaneously. The burst pattern is the signal that this is a systemic problem, not five unrelated one-off failures.
Calculation
The engine maintains a rolling 60-minute window over completed job runs and counts terminal failures:TIMEDOUT is grouped with FAILED because, from a pipeline-health perspective, a job that blew past its timeout is just as broken as one that threw an exception, and timeouts often appear in bursts when a shared cluster is saturated. CANCELED is excluded: a cancellation is a deliberate human action, not a failure, and including it would fire the alert every time someone aborts a stuck run.
Counting happens at the run level, not the task level. A single workflow with twelve tasks that fails counts as 1, not 12. This is deliberate: the failure of one upstream task usually cascades to fail every downstream task in the same run, and counting tasks would make a single broken job look like a burst on its own. The burst signal is meant to catch many separate jobs failing, which is the fingerprint of a shared root cause.
The window is evaluated every minute against the Jobs API. Because the API reports a run’s result_state only once the run reaches a terminal state, the alert is necessarily reactive: it fires after the failures land, not before. For predictive cost-runaway on jobs that are still alive, pair with Long-Running Jobs (>1h).
Worked example
A data engineering team runs a medallion architecture on Databricks feeding an ecommerce analytics layer: bronze ingestion jobs land raw order and product data, silver jobs clean and conform it, gold jobs build the marts that BI dashboards read. Snapshot taken on 14 Apr 26 at 03:40 BST, mid-nightly-batch.
By 03:22 the rolling 1-hour count has reached 6 failed runs and the card escalates with the headline 6 job failures in 1h, cascade from bronze-orders-ingest. The on-call data engineer reads the burst correctly in seconds: this is not six problems, it is one problem (the bronze ingest broke) cascading down the medallion.
The triage playbook the burst enables:
- Read the burst, not the individual failures. The timestamps cluster tightly (03:12 to 03:22) and the dependency chain is obvious: bronze failed first, everything downstream failed because its input was missing. The root cause is the 03:12 failure; the other five are collateral.
- Find the trigger. The bronze job log shows a schema-evolution error: the source system added a
loyalty_tiercolumn declaredNOT NULL, and the ingest job’s strict schema rejected it. A one-line fix (enable schema evolution or add the column to the target) unblocks the whole chain. - Decide on the rerun order. Fixing and rerunning bronze first, then triggering the downstream jobs in dependency order, is far cheaper than blindly rerunning all six and watching the downstream ones fail again on still-missing data.
- Quantify the blast radius. Top 10 Failing Workflows (7d) confirms whether this is a first-time break or a recurring fragility, and Pipeline Lag (since last success) shows how stale the gold marts now are for the morning’s dashboards.
Sibling cards
Reconciling against the source
Where to look in Databricks:Workflows → Job runs in the workspace UI, filtered to the last hour and to the Failed and Timed out statuses. The count there should match this card.Why our count may legitimately differ from the Job runs page:databricks jobs list-runson the Databricks CLI, orGET /api/2.1/jobs/runs/list, filtered byresult_stateandend_time, to reproduce the count programmatically.system.lakeflow.job_run_timelinesystem table for the authoritative historical record of every run’s terminal state, useful for post-incident reconstruction of the exact cascade order.
Cross-connector reconciliation:
Known limitations / FAQs
Five of my jobs failed but the alert did not fire. Why? The trigger is strictly more than 5, so the sixth failure within the hour is what escalates the card. Exactly 5 failures sits just under the threshold. If your estate is small and you want earlier warning, lower the threshold in the Alert Rules tab; a 3-job burst is a reasonable setting for a workspace with only a handful of scheduled jobs. One job with twelve tasks failed and I expected a burst. Why is the count 1? The card counts at run level, not task level, on purpose. The failure of one task usually cascades to fail the remaining tasks in the same run, so counting tasks would make a single broken job masquerade as a burst. The burst signal is specifically designed to catch many separate jobs failing, which is the fingerprint of a shared root cause across your estate. A job failed, retried, and then succeeded. Is it in the count? No. Only runs whose final terminal state isFAILED or TIMEDOUT are counted. A run that recovered on retry is treated as a success. This keeps the burst signal focused on genuine, unrecovered failures rather than transient blips that the retry policy already absorbed.
Are cancelled runs counted?
No. CANCELED runs are excluded because cancellation is a deliberate human action, not a failure. If they were included, every time an engineer aborted a stuck run during an incident the alert would fire, adding noise during exactly the moment you want a clean signal.
The burst points at six unrelated jobs with no shared dependency. What does that mean?
That is the second burst shape and it usually points at shared infrastructure rather than a data cascade. Common causes: an expired service principal or PAT token breaking authentication across jobs, a metastore or Unity Catalog hiccup, a cluster pool that ran out of capacity so new clusters could not start, or a cloud-provider zone issue. Check token expiry and pool capacity first.
Does this include Delta Live Tables pipeline failures?
Not directly. This card reads the Jobs API runs. DLT pipelines have their own lifecycle and are tracked on DLT Pipeline Status Distribution. During a workspace-wide event you will often see both this card and the DLT card light up together; read them as one incident.