pharos/alert_manager
Per-threshold alert state machine.
Wraps an eparch/state_machine running the four-state lifecycle
Clear -> Pending -> Firing -> Cooling -> Clear.
The state machine is registered under a deterministic Name so
that supervisor restarts.
keep AlertManager handles valid: callers send Breach / Recover
casts to the registered name, which the OTP runtime resolves to the
current pid on each call.
breach/1 and recover/1 map physical signals (threshold crossed
up / down) to state transitions. The dispatcher is notified with
AlertFiring and AlertResolved events on the relevant transitions.
Types
Restart-resilient handle to a per-threshold alert state machine.
pub opaque type AlertManager
Values
pub fn from_name(name: process.Name(Message)) -> AlertManager
Wrap a registered name as an AlertManager. The supervisor uses this
to build handles before the underlying state machine has been started,
so that the handler-attacher can route breach/recover signals to a
stable address.
pub fn recover(manager: AlertManager) -> Nil
Signal that the threshold is no longer breached.
pub fn sample(manager: AlertManager, value: Float) -> Nil
Feed a sample to a windowed rule. The manager folds it into its window and derives breach/recover from the aggregate.
pub fn start_link(
data: alert.AlertData,
bus: event_bus.EventBus,
name: process.Name(Message),
) -> Result(AlertManager, state_machine.StartError)
Start a state machine for data, registering it under name. Notifies
bus with AlertFiring / AlertResolved events on the relevant
transitions.