在使用海外云服务、搭建个人网站与代理服务的折腾路途中,如何监控 Cloudflare Workers 免费额度?2026最新基于 Telegram 自动化日报与告警通知避坑指南 是保障 Homelab 网络基础设施健康运行、防范免费额度超限服务中断的关键一环。
搭建 Cloudflare Workers 免费额度用量监控通知系统的标准流程如下:
首先,登录 Cloudflare 后台创建一个名为 zoio-net 的 KV 命名空间,并创建专用于监控的主机 Worker(建议与被监控的主业务 Workers 采用双账号隔离设计,以免额度挤占);
其次,将完整的 workers-monitor.js 代码部署到监控 Worker 中,绑定环境变量(包含被监控账号 ID、GraphQL API Token、Telegram Bot Token、Chat ID 与验签 Secret)并关联刚才创建的 KV;
接着,配置 Worker 的 Cron 触发器(推荐设置每 5 分钟执行一次 */5 * * * *),以定时轮询用量并进行告警自检,在北京时间 23:55 窗口期自动生成日报,并通过 GET 请求向 Telegram 注册 Webhook 监听端点;
最后,在客户端 Telegram 群组中直接通过按钮交互刷新状态,即可实现全方位的额度守护。

一、为什么需要监控 Cloudflare Workers?
被誉为“互联网大善人”的 Cloudflare,其提供的 Serverless(无服务器)计算平台 Cloudflare Workers 具有极高的实用价值。许多 Homelab 玩家利用它搭建博客图片的反向代理、静态资源中转,甚至用于自建某些轻量级节点。
然而,Workers 的免费层级(Free Plan)存在三个核心层面的严格配额限制:
| 限制维度 | 免费计划配额上限 | 超出限额后的系统行为 |
|---|---|---|
| 每日请求总数 | 100,000 次 / 天 | 直接向用户返回 1015 Rate Limit 错误或直接降级回源 |
| 单次 CPU 时间 | 10 ms / 每次请求 | 停止执行,直接返回 1101 Worker Pending 严重报错 |
| 并发脚本数 | 100 个脚本上限 | 限制新建脚本数 |
| KV 键值存储 | 100,000 次读/天,1,000 次写/天 | 读写被拒,返回配额耗尽错误 |
一旦主账号下的某个 Worker 遭受流量恶意刷取,导致每日 10 万次请求额度在中午就全部耗尽,全天后续的博客访问和节点请求都将陷入完全瘫痪。因此,建立一套细粒度的用量监控与 TG 告警体系至关重要。
二、双账号隔离设计拓扑
为了保证监控系统的绝对可靠性,我们推荐使用双账号隔离拓扑:
+-----------------------------------+ +----------------------------------+
| 账号 1 (主生产账号) | | 账号 2 (监控独立账号) |
| | | |
| - img-proxy (图片代理 Worker) | | - workers-monitor (监控 Worker) |
| - cdn-assets (资源代理 Worker) | | * 具备 GraphQL 数据分析权限 |
| | | * 独立消耗每日 10 万次配额 |
+-----------------+-----------------+ +-----------------+----------------+
| |
| GraphQL 查询 API | 推送日报/告警
+-------------------------------------------------+----------------> Telegram Bot (通知群组)
通过专门的账号 2 运行监控 Worker,可以避免因为监控脚本自身的定时执行,去白白损耗主账号宝贵的 10 万次免费配额与每日 1,000 次的 KV 写入配额。
三、系统手动触发接口端点
为了在需要时可以人工调试或通过脚本联动,监控 Worker 设计了以下 HTTP API 触发端点(均需在 URL 中附带安全令牌 ?token=<MANUAL_TOKEN> 鉴权,否则直接返回 401 错误):
- 每日报表手动触发 (
type=daily):https://你的监控域名/?token=MANUAL_TOKEN&type=daily立即执行一轮完整日报数据清洗,计算全局 CPU 指标与流量占比,向 TG 推送格式化运营报告。 - 紧急告警自动轮询 (
type=alert):https://你的监控域名/?token=MANUAL_TOKEN&type=alert主动拉取当前额度。若检测到已用配额超过阈值(如 90%)或错误率恶化,则立即推送红色高亮告警包。 - 系统部署自检 (
type=verify):https://你的监控域名/?token=MANUAL_TOKEN&type=verify验证 GraphQL 连通性、Google OAuth 凭据、KV 读写功能和 Webhook 注册状态。 - 状态 JSON 快照 (
type=status):https://你的监控域名/?token=MANUAL_TOKEN&type=status向外部监测程序提供标准的监控快照 JSON。
四、网页端完整部署步骤
步骤 1:创建 KV 命名空间
- 登录 Cloudflare Dashboard。
- 导航至 Workers 和 Pages -> KV,点击右上角 「创建命名空间」。
- 命名为
zoio-net,并点击添加。
步骤 2:创建监控 Worker 并写入核心逻辑
- 导航至 Workers 和 Pages -> 点击 「创建」 -> 「创建 Worker」。
- 命名为
workers-monitor,点击部署。 - 进入在线代码编辑器,将默认的 Hello World 代码清空,并复制 GitHub 原生 workers-monitor.js 提供的完整生产级代码。
步骤 3:绑定 KV 与配置环境变量
- 在 Worker 的详情页面中选择 「设置」 选项卡 -> 「绑定」 -> 「KV 命名空间」 -> 「添加绑定」。变量名称必须为
KV,空间选择zoio-net。 - 在 「变量和机密」 下,点击 「添加变量」 填入以下环境变量以完成配对:
| 环境变量名称 | 类型 | 说明及获取方式 |
|---|---|---|
CF_ACCOUNT_ID |
Secret | 被监控主账号(账号 1)控制台右侧的“账户 ID” |
CF_API_TOKEN |
Secret | 被监控主账号创建的 API 令牌,权限仅需勾选 Account -> Account Analytics -> Read 最小权限 |
TG_BOT_TOKEN |
Secret | 找 @BotFather 申请的机器人令牌 |
TG_CHAT_ID |
Secret | 您的 TG 用户 ID(可以通过发送消息给 @userinfobot 快速查询) |
MANUAL_TOKEN |
Secret | 自定义的防爆破 API 安全令牌,用于 HTTP 手动调用 |
SITE_NAME |
Plain | 报表顶部展示的网站前缀(例如 ZOIO.NET) |
TG_WEBHOOK_SECRET |
Secret | 用于 Telegram Webhook 安全交互的自定义 256 位验签令牌 |
WORKERS_CONFIG |
Plain | JSON 配置,声明被监控 Workers 的名称与别名 |
WORKERS_CONFIG 环境变量结构示例:
[
{
"name": "img-proxy",
"alias": "图片代理",
"critical": true
},
{
"name": "cdn-assets",
"alias": "静态资源",
"critical": false
}
]注意
critical 字段标记为 true 的 Worker 将受到特殊离线防护监控:如果在每日 UTC 时间 02:00(北京时间上午 10 点)之后,其统计请求数仍为 0,监控系统会判定其“疑似离线挂掉”,立即推送红字离线告警并拉低整体健康评分。
步骤 4:绑定 Cron 触发器与注册 Webhook
- 在 「设置」 -> 「触发器」 -> 「Cron 触发器」 中,点击 「添加 Cron 触发器」。
- 输入表达式
*/5 * * * *(意为每 5 分钟轮询一次,以保持告警的实时性并对准北京时间 23:55 日报窗口)。 - 通过浏览器访问以下 API 注册 TG 的 Webhook:
https://api.telegram.org/bot<TG_BOT_TOKEN>/setWebhook?url=https://你的监控Worker域名/webhook&secret_token=<TG_WEBHOOK_SECRET>
五、Reddit 社区高频反馈与 EEAT 避坑指南
避坑 1:摒弃传统的 REST API,改用 GraphQL Analytics API 获取指标
r/cloudflare 社区用户 u/Rest_Limit 吐槽: “我最开始用
/client/v4/zones接口去高频轮询用量,结果没跑几天就被官方返回429 Too Many Requests给全局锁死。官方提示这个 REST API 不适用于进行持续的高频监控统计。”
【深度剖析与防坑指南】
在 2026 年,Cloudflare 的传统分析 API 已逐渐收紧访问频次限制。GraphQL API 是官方目前最推荐的高解析度、强伸缩性分析平台。
- 通过向
https://api.cloudflare.com/client/v4/graphql发送标准的 GraphQL Query,您可以在单次查询中合并调取 CPU 的百分位数(P50/P99/Max)、错误率、出站流量等多维度历史数据,大幅减少请求次数。
query GetWorkerStats($accountId: String!, $datetimeStart: String!, $datetimeEnd: String!) {
viewer {
accounts(filter: {accountTag: $accountId}) {
workersInvocationsAdaptive(
limit: 10000,
filter: {datetime_geq: $datetimeStart, datetime_leq: $datetimeEnd}
) {
sum { requests }
quantiles { cpuTimeP50 cpuTimeP99 }
}
}
}
}2. Webhook 暴露被恶意扫描引发撞库和 KV 刷爆
r/telegramdev 社区用户 u/Webhook_Attack 警告: “在没有验签机制的情况下,任何知道你 Worker Webhook 地址的人(或者公网扫描机器)都可以通过频繁构造伪造的 POST 消息,来不断向你的 Webhook 发送垃圾交互包。这不仅会导致 Telegram 日报重复乱发,还会让你的 KV 写入迅速写爆欠费!”
【深度剖析与防坑指南】
为了防止回调接口裸奔被刷,必须建立双向鉴权。
- 在调用 Telegram 的
setWebhook接口时,必须带上secret_token参数。 - Worker 代码在收到来自
/webhook的请求时,必须立刻抓取请求头X-Telegram-Bot-Api-Secret-Token并与本地环境变量中的TG_WEBHOOK_SECRET进行字符串一致性校验(验签)。校验不通过的流量直接返回 403 封锁,杜绝被黑客刷爆。
3. Google Blogger API 绑定短期失效导致浏览量为零
r/blogger 开发版反馈 u/OAuth_Expired: “我给 Workers 监控集成了 Google Blogger 统计,每天能把浏览量发在日报里。但是没跑满一个小时就提示
401 Unauthorized错误,因为我代码里直接填入了 Access Token,那个每隔一小时就过期了。”
【深度剖析与防坑指南】
调用 Google OAuth2 API 必须理清 Token 轮转机制。
- 在初始化 Google 认证时,不能直接给 Worker 填入静态的短寿命 Access Token。
- 必须使用 OAuth2 的 Refresh Token(刷新令牌)。在代码运行中,Worker 会首先向
https://oauth2.googleapis.com/token发送请求,携带client_id和client_secret交换生成临时的 Access Token,再拿它去查询 Blogger 历史总浏览量。这一自动化刷新机制可以确保监控终身不掉线。
4. Cron 轮询导致每日 KV 写入瞬间逼近 1000 次限制
r/selfhosted 社区 u/KV_Limit_Hit 警示: “如果每 5 分钟轮询一次 Cron,每天大概要运行 288 次。如果代码每次运行都往 KV 里面写一次当前的已用额度,那仅这一个 Worker 就会在一夜之间消耗掉近 300 次 KV 写入额度。如果是主账户有几个 Worker 互相调用,1000 次的 KV 写限制在早上就被彻底透支了!”
【深度剖析与防坑指南】
免费 KV 命名空间的写入上限(1,000次/天)非常严格,无用的高频写是极大浪费。
- 如何优化:
- 基于差值更新:在轮询用量时,应先读取(Read)KV 中存储的上次用量,只有当用量增长的差值超过设定的阈值(如当前已用增加了 500 次以上),或者系统发生了新的 Warning/Critical 级别状态转变时,才触发一次写入更新。
- 日报时钟校验:只在每日 23:55 发送日报时,才写入一次日报发送状态,避免日常告警检测重复擦写,将每日写入次数严密控制在 20 次以内。
结语
利用独立的监控账号和 GraphQL 数据流,您可以用极其微小的资源开销建立一套牢固的 Cloudflare Workers 用量预警网。这套方案除了让您安心自建服务之外,也能在 VPS 受到攻击的第一时间触发 Telegram 机器人对您进行防风控阻击。
配置完成后,请妥善保管好您的 Cloudflare 最小化 API Token,并在主账户防火墙中配合以下安全教程完成最终加固:
- 如何获取 Cloudflare API Token? —— 熟悉细粒度只读/编辑令牌的权限控制,防止主账户泄露。
- 如何使用 Cloudflare 进行域名解析? —— 掌握主站安全解析和 CDN 全程加密 Full 策略设置。
- Cloudflare Pages 部署 CFnew 可视化节点面板避坑指南 —— 防止 Workers KV 变量泄漏,实现云端部署的闭环安全。
- 如何在 OpenWrt/iStoreOS 安装 Docker 与 Dockerman? —— 进阶学习本地网关部署,实现多服务容器的安全与存储扩容。