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_readygauge1 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_runscountersuite, statusRecorded 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 == 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