Slot Usage Spike — Last 24h
Project-level slot consumption exceeds the 30-day daily max by more than 30%.
Why monitor
- Compares today's slot consumption against a 30-day rolling baseline — alerts only when compute is genuinely anomalous, not just on normally busy days.
- Slot-hours is the true cost signal — unlike bytes billed, slot usage reflects actual compute consumed, including flat-rate reservation waste.
- Project-level segmentation isolates which workload is responsible when you run multiple projects under one billing account.
WITH
main_metric AS (
SELECT
project_id,
ROUND(SUM(total_slot_ms) / 3600000.0, 2) AS METRIC_VALUE
FROM `region-us.INFORMATION_SCHEMA.JOBS_BY_PROJECT`
WHERE creation_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 25 HOUR)
AND creation_time < TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR)
AND state = 'DONE'
GROUP BY project_id
),
baseline_windows AS (
SELECT
TIMESTAMP_SUB(TIMESTAMP_TRUNC(CURRENT_TIMESTAMP(), DAY),
INTERVAL (day_offset + 1) DAY) AS window_start,
TIMESTAMP_SUB(TIMESTAMP_TRUNC(CURRENT_TIMESTAMP(), DAY),
INTERVAL day_offset DAY) AS window_end
FROM UNNEST(GENERATE_ARRAY(1, 30)) AS day_offset
),
baseline_metric AS (
SELECT
j.project_id,
w.window_start,
ROUND(SUM(j.total_slot_ms) / 3600000.0, 2) AS METRIC_VALUE
FROM `region-us.INFORMATION_SCHEMA.JOBS_BY_PROJECT` j
JOIN baseline_windows w
ON j.creation_time >= w.window_start
AND j.creation_time < w.window_end
WHERE j.state = 'DONE'
GROUP BY j.project_id, w.window_start
),
baseline AS (
SELECT
project_id,
MAX(METRIC_VALUE) AS COMPARED_VALUE,
MAX(METRIC_VALUE) * 1.3 AS COMPARED_VALUE_THRESHOLD
FROM baseline_metric
GROUP BY project_id
)
SELECT
m.project_id,
m.METRIC_VALUE,
ROUND(b.COMPARED_VALUE, 2) AS COMPARED_VALUE,
ROUND(b.COMPARED_VALUE_THRESHOLD, 2) AS COMPARED_VALUE_THRESHOLD,
CASE WHEN m.METRIC_VALUE > b.COMPARED_VALUE_THRESHOLD
THEN 'SPIKE' ELSE 'Normal'
END AS status
FROM main_metric m
LEFT JOIN baseline b ON m.project_id = b.project_id
ORDER BY m.METRIC_VALUE DESC
LIMIT 1000Sample alert
⚠️ Slot Usage Spike — my-project used 847 slot-hours in the last 24h. 30-day max: 312 slot-hours · 2.7× above baseline.