Back to articles
How we built multi-region uptime consensus on the BEAM — zero external dependencies
NewsDevOps

How we built multi-region uptime consensus on the BEAM — zero external dependencies

via Dev.toLe Gia Hoang

Originally published at uptrack.app/blog/multi-region-consensus The 3am problem UptimeRobot checks your site from one location. A CDN edge goes down in Frankfurt. Your server in Virginia is fine. Your users in Tokyo see no issues. But the single check from Frankfurt fails, and your phone buzzes at 3am. This is the false alert problem. Single-region monitoring can't distinguish between "the internet is broken between point A and point B" and "your server is actually down." The fix sounds simple: check from multiple regions, only alert if most agree. But the implementation is surprisingly hard. You need to coordinate checks across continents, collect results in real-time, compute consensus, and avoid duplicate alerts — all without adding latency or single points of failure. Here's how we did it with zero external dependencies using Erlang/OTP primitives. The architecture: one process per monitor Uptrack follows the Discord/WhatsApp pattern: one BEAM process per long-lived entity. Each mo

Continue reading on Dev.to

Opens in a new tab

Read Full Article
2 views

Related Articles