Metrics
Prometheus /metrics
Section titled “Prometheus /metrics”The status UI serves a Prometheus endpoint at GET /metrics. Suite health is
computed per scrape from SQLite (read-only, never cached), and the endpoint is
exempt from the UI’s basic auth — deployments are expected to gate it at the network
level instead, so the scrape config doesn’t have to carry a credential.
Label cardinality is bounded: one suite label value per suite id (tens at most).
| Metric | Type | Labels | Meaning |
|---|---|---|---|
talaia_db_ready | gauge | — | 1 when the SQLite store exists and opens; 0 on a fresh volume before the first run. |
talaia_suite_up | gauge | suite | 1 when the suite’s most recent run passed, 0 when it failed or errored; absent until a suite has run. |
talaia_suite_last_run_timestamp_seconds | gauge | suite | Unix time the suite last finished (staleness = now minus this). |
talaia_suite_last_duration_seconds | gauge | suite | Wall time of the suite’s most recent run. |
talaia_suite_runs | counter | suite, status | Recorded runs per suite and status (passed | failed | error). Cumulative over the retention window. |
Useful alert shapes:
- A suite is red:
talaia_suite_up == 0 - A suite is stale (scheduler stuck):
time() - talaia_suite_last_run_timestamp_seconds > <2× its schedule interval> - Talaia’s store is missing:
talaia_db_ready == 0for longer than a first-boot grace period.
The scheduler container additionally exposes supercronic’s own Prometheus metrics (per-cron-job execution counters), which double as its liveness signal.
InfluxDB v2 export (optional)
Section titled “InfluxDB v2 export (optional)”Set INFLUX_URL, INFLUX_TOKEN, INFLUX_ORG and INFLUX_BUCKET and every run is
mirrored to InfluxDB v2 over the HTTP write API (line protocol, no client library).
Leave INFLUX_URL empty to disable. Export failures are logged and never crash the
runner — SQLite remains the source of truth; Influx is a mirror for Grafana.
Two measurements are written per run:
smoke_run,suite=<id>with fieldspassed(0/1) andduration_mssmoke_test,suite=<id>,test=<name>with fieldspassed(0/1) andduration_ms, one point per individual test