【开源分享】CF-Workers-Monitor:给 Cloudflare 免费用量装上仪表盘与告警
1393 字
7 分钟
【开源分享】CF-Workers-Monitor:给 Cloudflare 免费用量装上仪表盘与告警
手上跑着不少 Cloudflare 上的小项目——本站博客本身就托管在 Pages 上,再加上各种随手写的 Worker 玩具,免费用量的消耗方越来越多。
Cloudflare 免费档其实相当大方,但额度藏在各产品的仪表盘深处:要看 KV 写了多少次、D1 扫了多少行,得在不同页面间来回跳转,而且默认没有任何告警。一旦哪个脚本失控刷爆额度,轻则当天服务中断,重则直接产生账单——对于白嫖党来说,这两种结局都很难接受。
于是自己动手,做了一个用量监控工具:CF-Workers-Monitor,折腾整理后开源分享出来。
它能做什么?

项目分为两个独立部署单元,各司其职:
① Pages 仪表盘——实时可视化
- 多账户支持:通过一个
EDGE环境变量配置任意多个 Cloudflare 账户,首页总览全局统计,也可下拉切到单个账户细看。 - 多产品用量:Workers 请求 / 错误 / 子请求 / CPU 耗时、KV 读写与存储、R2 的 A 类 / B 类操作与存储、D1 读写行数与存储、Pages 构建次数,一个页面全部展示。
- 自动刷新与缓存:前端每 60 秒自动更新,服务端另有 60 秒缓存 + 多账户并发查询,响应快又不浪费 API 调用。
- 亮暗主题、移动适配:原生 HTML/CSS/JS 实现,无框架依赖,手机上看也不局促。
② 监控 Worker——定时阈值告警
- Cron 自动执行:默认每小时整点检查一次,无需打开页面。
- 手动触发:生产环境没有手动触发定时任务的按钮,所以 Worker 额外留了
/run接口——浏览器或curl访问一次即可立即执行一轮监控(接口未设鉴权,会重复消耗 GraphQL 取数额度,建议仅偶尔手动使用);顺带/路径会返回上次运行与推送状态,可当存活探针用。 - 多级阈值告警:用量跨越预设阈值(如免费额度的 50% / 80% / 95%)时自动推送,阈值可按产品、按指标用环境变量逐项覆盖。
- 按账户独立监控:每个账户单独判断、各自触发,不会互相淹没。
- 按产品周期去重:Workers/KV/D1 按日、R2 按账单周期、Pages 构建按自然月,同一阈值一个周期只提醒一次,不会每小时轰炸。
- 双渠道推送:Server酱(微信)与 Telegram Bot,可分别开关。
- 省额度设计:KV 写入免费额度每天只有 1 千次,所以监控状态做了克制——低于最低阈值时不读 KV、只在跨越新阈值时才写入,监控自己不会成为额度大户。
部分计费指标的免费额度与默认告警阈值:
| 指标 | 免费额度 | 周期 | 默认告警阈值 |
|---|---|---|---|
| Workers 请求 | 10 万/天 | 日 | 5 万 / 8 万 / 9.5 万 |
| KV 读取 | 10 万/天 | 日 | 5 万 / 8 万 / 9.5 万 |
| KV 写入 | 1 千/天 | 日 | 800 / 950 |
| R2 A 类操作 | 100 万/账期 | 账期 | 80 万 / 95 万 |
| D1 读取行数 | 500 万行/天 | 日 | 400 万 / 475 万 |
| Pages 构建 | 500 次/月 | 自然月 | 250 / 400 / 475 |
完整指标表(含 KV/R2/D1 存储及阈值覆盖方式)见仓库内的详细文档。
快速上手
前提:Cloudflare 账户 + API 密钥(Account Analytics: Read,可加 Pages: Read)与账户 ID。
pnpm install
# ① Pages 仪表盘pnpm dev:pages # 本地预览(http://localhost:8788)pnpm deploy:pages # 部署到 Cloudflare Pages
# ② 监控阈值通知 Workerpnpm dev:monitor # 本地运行(http://localhost:8787)pnpm deploy:monitor # 部署到 Cloudflare Workerpnpm secret:put EDGE # 设置敏感变量(其余令牌同理)配置三件事:① 准备好 EDGE 账户数组(仪表盘与监控共用格式);② 新建 KV 命名空间并把 ID 填入 monitor/wrangler.toml;③ 在 Worker 控制台添加 Cron 触发器(如每小时 0 * * * *)。每个部署单元的详细步骤都写在仓库文档里,照着走即可。
一些设计取舍
- 为什么拆成两个部署单元? Pages Functions 不支持 Cron 定时触发器,监控必须放在独立的 Worker 上运行——索性按职责拆开:仪表盘走 Pages 托管静态资源 + Functions 查数据,监控走 Worker + Cron,互不干扰。
- 账期 ≠ 自然月:Cloudflare 的月度额度按订阅账单周期重置,不一定从每月 1 号算起。工具会读取订阅接口拿真实账期来统计 R2 用量,读取失败时降级为自然月并推送一条告警提醒;Pages 构建额度则官方明确按自然月,单独处理。
- 数据来源:全部走 Cloudflare 官方 GraphQL 分析接口,存储类指标取最新时间窗的最大值汇总,与官方账单口径保持一致。
- 项目来源:本项目源自社区一个同名的开源监控工具,在其基础上大量扩展重构——新增了 KV / R2 / D1 / Pages 构建的多产品监控、账期统计、多账户独立告警、周期去重与多渠道推送——现已独立维护。致敬原作者的出色工作。
第一次给”看住钱包”这种需求造轮子,代码仓库已开放:
👉 GitHub:CF-Workers-Monitor
欢迎在仓库提交 Issue 反馈 bug 或优化建议;如果这个工具刚好帮你守住了信用卡,不妨顺手点个 Star 支持一下。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
【开源分享】CF-Workers-Monitor:给 Cloudflare 免费用量装上仪表盘与告警
https://awakaze.com/posts/cf-workers-monitor/相关文章智能推荐
1
【开源分享】MiMonitorLightTray:在 Windows 任务栏优雅调节米家挂灯
开源项目一个常驻 Windows 任务栏的米家显示器挂灯托盘工具:纯局域网 miio 直连、多灯管理、滚轮精细调光、动态 IP 容错,现已 MIT 协议开源。
2
【整蛊】让我帮你 DeepSeek 一下,专治伸手党
小工具把「Let Me Google That For You」的整蛊玩法搬到 DeepSeek 上:生成一条链接甩给伸手党,对方会先被一段手把手教程动画教一遍,再在复刻官方风格的聊天页里拿到答案。线上地址 lmdsfy.awakaze.com。
3
用Firefly博客主题搭建个人博客
教程从拉取主题、安装依赖到配置部署,一步步用 Firefly 主题搭建个人博客。
随机文章随机推荐














