监控您的网站,展示状态(包括每日历史记录),并在网站状态发生变化时收到 Slack 通知。使用Cloudflare Workers 、 CRON 触发器和KV 存储。检查我的状态页面!
您需要一个 Cloudflare Workers 帐户
另外,准备以下秘密
Edit Cloudflare Workers
权限的 Cloudflare API 令牌您可以使用 GitHub Actions 通过Cloudflare Deploy Button进行部署,也可以自行部署。
单击按钮并按照说明进行操作,您最终应该得到此存储库的克隆
导航到新的GitHub 存储库 > 设置 > Secrets并添加以下机密:
- Name : CF_API_TOKEN (should be added automatically)
- Name : CF_ACCOUNT_ID (should be added automatically)
- Name : SECRET_SLACK_WEBHOOK_URL (optional)
- Value : your-slack-webhook-url
- Name : SECRET_DISCORD_WEBHOOK_URL (optional)
- Value : your-discord-webhook-url
导航到存储库中的操作设置并启用它们
编辑 config.yaml 以调整配置并列出您想要监控的所有网站/API
settings :
title : ' Status Page '
url : ' https://status-page.eidam.dev ' # used for Slack & Discord 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
monitors :
- id : workers-cloudflare-com # unique identifier
name : workers.cloudflare.com
description : ' You write code. They handle the rest. ' # default=empty
url : ' https://workers.cloudflare.com/ ' # URL to fetch
method : GET # default=GET
expectStatus : 200 # operational status, default=200
followRedirect : false # should fetch follow redirects, default=false
linkable : false # should the titles be links to the service, default=true
推送到main
分支以触发部署
?
(可选)转到 Cloudflare Workers 设置并分配自定义域/路由
status-page.eidam.dev/*
(确保包含/*
因为 Worker 还提供静态文件)(可选)编辑 wrangler.toml 以调整 Worker 设置或 CRON 触发器计划,特别是如果您使用 Workers Free 计划
要启用电报通知,您需要执行一些额外的步骤。
SECRET_TELEGRAM_API_TOKEN
密钥的内容。/start
更多的内容)curl https://api.telegram.org/bot/getUpdates | jq '.result[0] .message .chat .id'
获取聊天ID curl https://api.telegram.org/bot/getUpdates | jq '.result[0] .message .chat .id'
SECRET_TELEGRAM_CHAT_ID
秘密变量中设置检索到的聊天 ID您可以自己克隆存储库并使用 Wrangler CLI 来开发/部署,您需要处理的额外事项列表:
KV_STATUS_PAGE
绑定添加到 wrangler.tomlSECRET_SLACK_WEBHOOK_URL
SECRET_DISCORD_WEBHOOK_URL
Workers Free 计划包含有限的 KV 使用,但配额仅足以进行 2 分钟检查
crons = ["*/2 * * * *"]
) 如果您使用 Slack 通知,则最多可观看 25 个监视器,因为 Cloudflare Worker 可以发出的子请求有限制 (50)。
该计划是通过每次计划运行仅发送一个 Slack 通知来支持最多 49 个。
KV 复制延迟- 您可能会立即收到 Slack 通知,但可能需要几秒钟才能在状态页面上看到更改,因为 Cron 触发器通常在未充分利用的安静时间计算机上运行。
初始延迟(无数据) - 第一次安排和运行 CRON 触发器需要几分钟
WIP - 支持持久对象 - Cloudflare 的产品,用于为 Workers 平台提供低延迟协调和一致存储。有一个工作原型,但是,我们至少正在等待公开测试版。
该项目还有一个托管版本,目前处于测试阶段。请随时查看 https://statusflare.com (https://twitter.com/statusflare_com)。
要求
npm i -g yarn
)安装牧马人
npm i -g wrangler
使用 Wrangler 登录 Cloudflare
wrangler login
在 cloudflare 中创建您的 KV 命名空间
On the workers page navigate to KV, and create a namespace
更新你的 wrangler.toml 为
kv-namespaces = [{binding="KV_STATUS_PAGE", id="", preview_id=""}]
注意:您可能需要将kv-namespaces
更改为kv_namespaces
安装包
yarn install
创建CSS
yarn run css
跑步
yarn run dev
注意:如果样式未通过,请尝试使用localhost:8787
而不是localhost:8080