Concepts
ObserveKit alerts are built around four ideas. If you grasp these, the rest of the system explains itself.
1. Rules detect
A rule is a question ObserveKit asks repeatedly: *is this thing wrong right now?*
A rule has:
- A condition — a metric threshold, a log pattern, an anomaly. Pick from a template or write your own expression.
- A scope — which series the rule applies to. Empty scope means "every series".
- A sustain window — how long the condition must hold before firing. Stops false alarms from short blips.
- A severity — Critical, Warning, or Info.
When the condition is true for the sustain window, the rule fires an alert. When it falls back below the threshold, the rule resolves.
2. Routing decides
A fired alert is just a label set. Routing policies decide what happens next:
- Which channels get notified.
- How long to wait before the first notification.
- How alerts are grouped into incidents.
- When to renotify if nobody acknowledges.
Routing is a tree. Alerts walk the tree top-down. The first matching policy wins. You can have child policies that override the parent's defaults.
3. Incidents persist
An incident is a fired alert that's been routed to a channel. Incidents persist across rule re-fires:
- If the same alert fires again within the reopen window, the existing incident reopens instead of a new one being created.
- Several alerts can group into one incident — controlled by Group by on the routing policy.
- Acknowledging an incident silences renotifications until it auto-expires.
The Incidents page lists every incident, open or closed, with full history.
4. Silences suppress
A silence is a temporary mute. Define matchers, set a window, add a comment. Any alert whose labels match the silence — within the window — is suppressed.
Use silences for known maintenance, vendor outages, or noisy alerts you're already investigating.
How they fit together
metric / log lines
│
▼
┌───────┐ ┌──────────┐ ┌────────┐
│ Rule │ → │ Routing │ → │Channel │
│ ? │ │ policy │ │(email, │
└───────┘ └──────────┘ │ Slack, │
│ │ │ Teams, │
│ ▼ │webhook,│
│ ┌─────────┐ │PagerDy)│
│ │Incident │ └────────┘
│ │ + group │
│ └─────────┘
▼
┌─────────┐
│Silence? │ ← suppresses dispatch
└─────────┘