Monitoring of 28 websites with a daily Telegram report
The challenge
After launching dozens of client websites nobody knew one had gone down until the client called. Paid monitoring services sent an email for every hiccup, and the list of sites kept changing.
What was built
Monitoring was built into our own project control panel: sites are added there, and an observer rewrites sites.json in a GitHub repository on every change. Every day at 12:00 Kyiv time the hosting cron calls a key-guarded endpoint that checks each site sequentially with three attempts and a 10-second timeout and sends one Telegram report: “all N sites are up” or America / Ukraine / Kyiv sections with the sites that are down. GitHub Actions stayed as a manual backup in case of hosting trouble.
One list
sites are kept in the panel and grouped by region; sites.json in GitHub updates automatically.
Checks without panic
3 attempts of 10 seconds in sequence, so a short network blip does not become a false alarm.
One report a day
a green message when all is well, or a structured list of problems by region.
Hosting cron as the base
a key in the request, a 5-minute time limit for the whole run; no external services.
Backup run
GitHub Actions with a manual start reads the same sites.json.
Deduplication
a script normalises URLs (www, slash, protocol) so one site is never counted twice.
The result
We learn about a site going down before the client does, and the inbox gets one message a day instead of a stream of emails. Adding a site to monitoring is one form in the panel.
Tech stack
Have a similar challenge?
Discuss a projectNext case
Google Sheets + Telegram
Telegram alerts for changes in a Google Sheet →