version=0.0.4).
Unlike /healthz and /readyz, this endpoint sits behind the API key when SCHEDY_API_KEY is set - queue depth and backlog are operational detail.
What’s exported
Counters reset when Schedy restarts, which is what Prometheus expects -
rate() and increase() handle the reset for you.
The schedy_tasks gauges are read from the store on every scrape, so they never drift from what is actually stored.go_goroutines, go_memstats_*) are not exported.
Schedy emits the exposition format directly rather than depending on the Prometheus client library.
Scrape config
SCHEDY_API_KEY unset and the endpoint is open, like /healthz.
The two that matter
schedy_tasks_overdue is the signal that Schedy is not keeping up.
A healthy instance holds it near zero: tasks fire within a runner tick of their scheduled time.
A sustained non-zero value means work is arriving faster than it can be delivered, or a target is slow enough to hold the worker goroutines.
schedy_task_lateness_seconds is the same story as a distribution.
Alert on its high quantiles rather than its mean - a p99 of several minutes with a healthy mean is a subset of targets timing out, which the failure counter alone will not tell you.
schedy_task_lateness_seconds rather than hiding behind it.
See Catch-up.