!
Reliability
Alerts
Rule-based alerts evaluated every minute with webhook + email delivery.
▸ How it works
Alert rules live in `alert_rules` with a kind (`threshold`, `anomaly`, `forecast_breach`, `error_rate`, `slo_burn`), a metric/spec, a window, and a destination (Slack, PagerDuty, Teams, email, generic webhook). `AlertEvaluatorJob` runs every minute, evaluates each rule in a `Task.async_stream`, and on breach creates an `alert_events` row and enqueues a `WebhookDeliveryWorker`. Auto-resolves when condition clears.
▸ What this lets you do
- ✓ Threshold, anomaly, forecast, error-rate, and SLO-burn rules in one place
- ✓ Slack / PagerDuty / Teams / email / generic webhook destinations
- ✓ HMAC-signed webhook bodies (`X-Funnel-Signature: sha256=…`)
- ✓ Auto-resolution and auto-deduplication
▸ Get it running
- 1 Open `Alerts` → `New rule`, fill in metric + threshold + window
- 2 Choose destinations (multi-select)
- 3 Save — first evaluation within 60 s
▸ Code examples
Open `Alerts` → click `+ Rule`, then fill the form:
Name High error rate on api
Kind Error rate
Severity Critical
Service api
Threshold 0.05 # 5%
Window 300 s
Destinations (multi-select)
Slack https://hooks.slack.com/services/...
PagerDuty ROUTING_KEY_HERE
Save — first evaluation runs within 60 s. Webhook
destinations are created from the same page via `+ Webhook`.
Where to find it
/app/p/:org/:project/alerts