Skip to content

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).

MetricTypeLabelsMeaning
talaia_db_readygauge—1 when the SQLite store exists and opens; 0 on a fresh volume before the first run.
talaia_suite_upgaugesuite1 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_secondsgaugesuiteUnix time the suite last finished (staleness = now minus this).
talaia_suite_last_duration_secondsgaugesuiteWall time of the suite’s most recent run.
talaia_suite_runs_totalcountersuite, statusRecorded runs per suite and status (passed | failed | error). Cumulative; preserved across retention. Migration seeds it once from available history.
talaia_suite_last_requestsgaugesuiteSync-httpx calls and observed browser HTTP(S) requests in the latest measured run, including redirect hops.
talaia_suite_last_http_secondsgaugesuiteSummed httpx send/read time and browser request lifetimes.
talaia_suite_over_budgetgaugesuite1 if the latest measured run exceeded its footprint budget, otherwise 0.
talaia_app_infogaugeversionAlways 1; version is the git SHA of the deployed image (SOURCE_COMMIT baked in at build). Deploys show up as label changes.

The footprint gauges are absent when the latest run has no measurement. See Footprint and scheduling for limits, warning thresholds and browser traffic limitations. Counter history before the initial migration cannot be reconstructed if it was already purged.

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 == 0 for 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.

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 fields passed (0/1) and duration_ms
  • smoke_test,suite=<id>,test=<name> with fields passed (0/1) and duration_ms, one point per individual test