Dead-Man Heartbeat
A scheduled check-in to an off-host monitor — detected by absence, so a host that goes fully dark still gets noticed.
Dead-Man Heartbeat
A "dead man's switch" only works because the check is on the absence side, watched by something other than the thing it's checking. The heartbeat emitter is the push half of that — your application pings an external monitor on a schedule, and the monitor, not your application, decides what "the ping stopped arriving" means.
interface HeartbeatEmitterInterface
{
/** Send one ping. Returns true if the external monitor acknowledged it. */
public function emit(HeartbeatPing $ping): bool;
}emit() must be bounded by a hard timeout and must never block or throw into whatever scheduler loop is calling it — a heartbeat mechanism that can itself hang defeats its own purpose.
php bin/console vortos:observability:heartbeatRun this on a schedule (cron, a sidecar loop) pointed at any off-host dead-man-switch service. HttpHeartbeatEmitter is the shipped driver — a simple HTTP ping to a configured URL, since most dead-man-switch services (Healthchecks.io-style, BetterStack's heartbeat monitors, your own) expect exactly that.
How this fits the bigger picture
Health's DetectorIndependenceDoctorCheck treats this heartbeat as one of three independent failure detectors a production deploy is required to have configured — alongside in-app probes and an external synthetic uptime monitor. Health's health:monitor:tick command drives this heartbeat directly from the local probe rollup, deciding whether to send a Start, Success, or Fail ping based on what the probes found.
The point is independence from the host's own health
If your liveness probe and your heartbeat both run on the same host and that host crashes completely, neither one fires — which is exactly why the heartbeat alone isn't sufficient and the doctor check requires a genuinely external synthetic prober as the third leg. A heartbeat that stops arriving tells you "something is wrong," but only an off-host check that actively probes your service tells you what.
Deploy Audit Ledger
A hash-chained, HMAC-signed, append-only record of every deploy and rollback — verifiable and exportable independent of the underlying database's own integrity.
Deploy Markers & SLO Resources
Annotate dashboards with deploy/rollback events linked to the exact build, and declare SLOs as validated, version-controlled resources instead of free-floating dashboard config.