/work/pingr.md
Pingr
Distributed multi-region uptime monitor
- status
- active
- language
- Go
- year
- 2026
- stack
- Go · WebSockets · PostgreSQL · Redis · Docker · Fly.io
A Go uptime monitor that probes any target from three continents at once.
what it does
Containerized US/EU/Asia workers on Fly.io run HTTP/TCP/DNS checks with full
httptrace timing — DNS, TCP, TLS and TTFB broken out separately, so a slow
response can be attributed to a phase rather than guessed at.
threat model first
A service that fetches arbitrary user-supplied URLs from inside your infrastructure is an SSRF engine unless you build it as though it were one. That shaped the design before any of the monitoring did:
- scheme allow-listing, so only the protocols we intend are reachable
- 11 blocked private and metadata CIDR ranges
- DNS-rebinding defense via a custom dialer that revalidates the dialed IP rather than the hostname
The rebinding defense is the subtle one. Validating a hostname resolves it once; the attacker's DNS can return a public address for that lookup and a private one by the time the connection is actually made. Checking the IP at dial time is the only point where the answer can't change underneath you.
architecture
Probes fan out with errgroup, streaming per-region results over WebSockets as
they land rather than waiting for the slowest continent. Redis rate-limits per
IP. PostgreSQL rollups serve 24h/7d/30d uptime alongside p50/p95/p99 latency.