Incident manager, SLO control panel and status page for Frappe Cloud
Specification · Design · Contributor guide
Beacon watches every Frappe Cloud region. It reads the telemetry of each region from Datum, raises alerts, groups them into incidents and pages the responder. It measures each service against its SLO and shows customers a public status page.
Beacon is one Frappe app on one global site. It only reads Datum. It keeps alert, incident and SLO state in MariaDB, and it serves the status page at /.
| Part | What it does |
|---|---|
| Resources | Each region's Atlas lists what the region runs: hosts, VMs, service nodes and Cargo. Beacon keeps them as a tree. |
| Rules | Each app keeps its alert rules in beacon/rules/ of its own repository. A rule is one SQL query on Datum or one HTTP check. |
| Incidents | Firing alerts join an open incident. Beacon posts to chat, and calls and emails responders for High and Critical incidents. A High incident stops after 3 rounds by default. A Critical incident continues until a person acknowledges. |
| Services | An SLI query measures each service each minute. Burn-rate alerts protect the error budget. |
| Status page | A person decides what customers see. Customers follow one incident by email or RSS. |
| Task | Guide |
|---|---|
| Learn how Beacon works | Design |
| Find where code lives | Specification |
| Send metrics from a service, or add a rule or an SLI | Developer guide |
| Learn how data gets to Beacon | Telemetry |
| Make a code change | Contributor guide |
cd $PATH_TO_YOUR_BENCH
bench get-app git@github.com:frappe/beacon.git --branch develop
bench --site beacon.localhost install-app beaconBuild the status page with yarn build in the app folder. Use yarn dev in frontend/ for a Vite server that proxies /api to beacon.localhost:8000.
Run pre-commit install once. Pre-commit runs ruff, eslint and prettier.