!
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. 1 Open `Alerts` → `New rule`, fill in metric + threshold + window
  2. 2 Choose destinations (multi-select)
  3. 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
Open in app →