When to use a manual metric
- A signal that has no observability today (a third-party SaaS outage, a vendor dependency, an internal system without instrumentation).
- A high-level rollup that should follow operator judgment, not a noisy underlying measurement.
- A service whose status is gated on a contract with a vendor (where Observer should reflect what the vendor says, not what we measure).
What is different
How status flips
Two paths set status on a manual metric:- API:
POST /api/v1/metrics/{id}/statuswith{"status": "unhealthy"}. Scope:write:metrics. - Incident impact: when an open incident lists a service with an
SLO on a manual metric, that metric auto-flips to mirror the
incident severity (minor to
degraded, major or critical tounhealthy). On resolve, it is set tohealthy.
Threshold model
Manual metrics carry no thresholds. Status is set directly. Thehealthy_* / unhealthy_* columns on the metric definition are
ignored.
AuditEvery manual transition that changes the status writes an audit log row of action
metric.status.set_manually with the actor, source, and old →
new status. Useful when reconstructing why a public page rendered
a particular status at a given time.
