● Alwaysbeat

Using Alwaysbeat

Reliability controls

Optional per-check settings that tune the signal-to-noise of your alerts: suppress brief blips, chase unresolved outages, and catch jobs that run but run too long.

Flap cooldown

A check that rapidly bounces down→up→down (a "flapping" job) can generate a storm of alerts. The flap cooldown holds back a down alert for a short window; if the check recovers within that window, no down alert is sent at all — the blip self-resolved and you're not paged for nothing. If it's still down when the window closes, the alert fires.

flap_cooldown: 60s   # default; set 0 to alert immediately

Recoveries from a down state that was alerted always send a recovery notification. A blip that was suppressed sends nothing either way — down or up — because you were never told it went down.

Repeat reminders (nag)

By default a check alerts once when it goes down and once when it recovers — it does not re-alert on every sweep while down. If you want a periodic reminder that something is still broken, set a nag interval:

nag_interval: 1h   # re-notify every hour while still down (0 = off)

The reminders stop as soon as the check recovers.

Maximum run time

Pinging /start at the beginning of a job (see Signaling) lets Alwaysbeat measure how long each run takes. With a maximum run time set, it can act when a run overruns. There are two modes:

ModeBehaviour
hung (default) If a /start is not followed by a success/failure ping within the maximum run time, the check flips to down — the job is presumed hung or killed mid-run.
late The job is allowed to finish, but if the completed run exceeded the maximum run time you get a warning. The check stays up — it succeeded, just slowly.
max_run:      30m
max_run_mode: hung   # or "late"

Use hung for jobs that must complete within a window (a backup that has to be done before the business day). Use late for jobs where a slow run is worth knowing about but isn't itself a failure.

Run-time measurement needs a /start ping Duration and the maximum-run-time checks only work when your job pings /start before it begins and a success (or /fail) ping when it ends. Without a /start, there's nothing to measure.