Skip to content
Metrics & health

Metrics & health

Meridian’s observability surface is Prometheus metrics plus structured JSON logs — no database, so no other query interface exists. All three HTTP endpoints below share one listener (--listen, default [::]:8080).

HTTP endpoints

PathMeaning
/healthzLiveness: the process is up. Always 200 ok once the process is running.
/readyzReadiness: config parsed, CEL/templates compiled, and every configured calendar’s credentials verified via a read-only startup probe. 503 until all probes pass, then latches 200 permanently — later auth breakage is the meridian_last_successful_cycle_timestamp_seconds staleness alert’s job, not a readiness flap.
/metricsPrometheus text exposition format.

A pod that never reaches ready has provably touched no calendar. The readiness probe never runs anything beyond a windowed, read-only listing.

Metrics

Each description below is the metric’s own Prometheus Help string, which is the same text Prometheus and Grafana show you.

meridian_ops_totalType: counter · Labels: rule, op
Reconciliation operations executed, by rule and op kind.
meridian_op_errors_totalType: counter · Labels: rule, op, class
Failed reconciliation operations, by rule, op kind, and error class.
meridian_fetch_errors_totalType: counter · Labels: calendar, class
Failed calendar window fetches, by calendar and error class.
meridian_guard_triggers_totalType: counter · Labels: rule, guard
Hardening guard triggers, by rule and guard.
meridian_cycle_duration_secondsType: histogram
Full reconciliation cycle duration.
meridian_last_successful_cycle_timestamp_secondsType: gauge · Labels: rule
Unix time of the last fully successful cycle per rule (the alerting primitive).
meridian_notify_failures_totalType: counter
Notification deliveries that failed (best-effort channel).
meridian_shadow_driftType: gauge · Labels: rule, dest
Shadows whose observed content hash differs from the marker hash (manual edits or provider normalization). Includes drift that gets auto-repaired this cycle — see meridian_shadow_drift_unrepairable for the alertable subset.
meridian_shadow_drift_unrepairableType: gauge · Labels: rule, dest
Shadows still drifted after exhausting bounded repair retries — persistent hand-tamper or unstable provider normalization. The alertable subset of meridian_shadow_drift.

For which of these to alert on, see Operate.

Structured op logs

Every engine operation emits one slog JSON record to stdout with op, rule, the source event reference, reason, and the relevant content hashes. There is no database to query instead, so this is the forensic and audit record.

Last updated on