Monitor your websites, showcase status including daily history, and get Slack/Telegram notification whenever your website status changes. Using Cloudflare Workers, CRON Triggers, and KV storage.
Monitor your websites, showcase status including daily history, and get Slack notification whenever your website status changes. Using Cloudflare Workers, CRON Triggers, and KV storage. Check my status page out! 🚀
You'll need a Cloudflare Workers account with
Also, prepare the following secrets
Edit Cloudflare Workerspermissions
You can either deploy with Cloudflare Deploy Button using GitHub Actions or deploy on your own.
- Name: CF_API_TOKEN (should be added automatically)
Name: CF_ACCOUNT_ID (should be added automatically)
Name: SECRET_SLACK_WEBHOOK_URL (optional)
settings: title: 'Status Page' url: 'https://status-page.eidam.dev' # used for Slack messages logo: logo-192x192.png # image in ./public/ folder daysInHistogram: 90 # number of days you want to display in histogram collectResponseTimes: false # experimental feature, enable only for <5 monitors or on paid plans
configurable texts across the status page
allmonitorsOperational: 'All Systems Operational' notAllmonitorsOperational: 'Not All Systems Operational' monitorLabelOperational: 'Operational' monitorLabelNotOperational: 'Not Operational' monitorLabelNoData: 'No data' dayInHistogramNoData: 'No data' dayInHistogramOperational: 'All good' dayInHistogramNotOperational: 'Some checks failed'
list of monitors
mainbranch to trigger the deployment
status-page.eidam.dev/*(make sure you include
/*as the Worker also serve static files)
To enable telegram notifications, you'll need to take a few additional steps.
SECRET_TELEGRAM_API_TOKENsecret in your github repository.
curl https://api.telegram.org/bot/getUpdates | jq '.result .message .chat .id'
You can clone the repository yourself and use Wrangler CLI to develop/deploy, extra list of things you need to take care of:
KV_STATUS_PAGEbinding to wrangler.toml
The Workers Free plan includes limited KV usage, but the quota is sufficient for 2-minute checks only
crons = ["*/2 * * * *"]) in wrangler.toml
The plan is to support up to 49 by sending only one Slack notification per scheduled run.
KV replication lag - You might get Slack notification instantly, however it may take couple of more seconds to see the change on your status page as Cron Triggers are usually running on underutilized quiet hours machines.
Initial delay (no data) - It takes couple of minutes to schedule and run CRON Triggers for the first time
Stay tuned for more features coming in, like leveraging the fact that CRON instances are scheduled around the world during the day so we can monitor the response times. However, we will most probably wait for the Durable Objects to be in open beta as they are better fit to reliably store such info.