No description
  • TypeScript 80.2%
  • JavaScript 10.9%
  • CSS 6.5%
  • HTML 2.4%
Find a file
weiguohao 4f89344059
Some checks failed
Deploy / deploy (push) Has been cancelled
feat: implement daily uptime tracking and snapshot updates
2026-08-21 15:29:40 +08:00
.github/workflows feat: 一键部署 2026-08-20 16:50:40 +08:00
config feat: 修改配置 2026-08-20 17:15:50 +08:00
docs init 2026-08-20 16:46:14 +08:00
migrations feat: implement daily uptime tracking and snapshot updates 2026-08-21 15:29:40 +08:00
public feat: implement daily uptime tracking and snapshot updates 2026-08-21 15:29:40 +08:00
scripts feat: 一键部署 2026-08-20 16:50:40 +08:00
src feat: implement daily uptime tracking and snapshot updates 2026-08-21 15:29:40 +08:00
test feat: implement daily uptime tracking and snapshot updates 2026-08-21 15:29:40 +08:00
.dev.vars.example init 2026-08-20 16:46:14 +08:00
.gitignore init 2026-08-20 16:46:14 +08:00
package-lock.json feat: 修改配置 2026-08-20 17:15:50 +08:00
package.json feat: 一键部署 2026-08-20 16:50:40 +08:00
README.md feat: 一键部署 2026-08-20 16:50:40 +08:00
tsconfig.json init 2026-08-20 16:46:14 +08:00
vitest.config.ts init 2026-08-20 16:46:14 +08:00
wrangler.jsonc feat: 修改配置 2026-08-20 17:15:50 +08:00

status-page

Cloudflare Worker 上的自建服务可用性页:边缘 HTTP 探测 + 可选心跳上报KV 快照对外D1 存历史和故障单。

本地运行

npm install
copy .dev.vars.example .dev.vars
npm run db:migrate:local
npm run dev

浏览器打开 http://127.0.0.1:8787。本地开发不会自动跑 Cron需要手动触发一轮探测

curl http://127.0.0.1:8787/cdn-cgi/local/scheduled

配置监控项

编辑 config/monitors.yamlkind: http 由 Worker Cron 每分钟探测公开 HTTPSkind: heartbeat 需内网进程上报。

密钥放 Worker Secrets / .dev.vars,不要写进 YAML

变量 用途
TELEGRAM_BOT_TOKEN Telegram Bot token
TELEGRAM_CHAT_ID 告警会话 ID
INGEST_TOKEN 心跳上报
RUN_SECRET 手动触发探测

心跳监控示例(加到 config/monitors.yaml

- id: nas
  name: NAS
  kind: heartbeat
  staleAfterSec: 180
  failThreshold: 3
  recoverThreshold: 1
  notify: true

上报:

curl -X POST https://status.example.com/api/ingest \
  -H "Authorization: Bearer $INGEST_TOKEN" \
  -H "Content-Type: application/json" \
  -d "{\"monitorId\":\"nas\",\"ok\":true,\"latencyMs\":12}"

一键部署

本机(首次会打开浏览器登录 Cloudflare并自动创建 KV / D1

npm install
npm run deploy

完成后 Worker 地址形如 https://status-page.<账号>.workers.dev。告警等密钥可选:

npx wrangler secret put TELEGRAM_BOT_TOKEN
npx wrangler secret put TELEGRAM_CHAT_ID
npx wrangler secret put INGEST_TOKEN
npx wrangler secret put RUN_SECRET

GitHub把仓库推上去后在仓库 Secrets 里配置 CLOUDFLARE_API_TOKENCLOUDFLARE_ACCOUNT_ID。之后推 main 或在 Actions 里点 Run workflow 即会部署。Token 权限需要 Account 的 Workers 编辑、D1 编辑、Account Settings 读取。

公开仓库还可以用 Cloudflare 的 Deploy 按钮,把仓库 URL 填进:

https://deploy.workers.cloudflare.com/?url=<你的 GitHub 仓库 URL>

Workers 建议用 Paid 计划:一次 Cron 要打多个出站请求。免费档子请求上限很容易碰到。

公开接口见 docs/api.md。状态变化(连续失败达到阈值)后会开故障单并(若已配置)发 Telegram。