在使用海外云服务、搭建个人网站与代理服务的折腾路途中,如何监控 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 Workers 额度监控与自动化日报


一、为什么需要监控 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 告警体系至关重要。


二、双账号隔离设计拓扑

为了保证监控系统的绝对可靠性,我们推荐使用双账号隔离拓扑

PLAINTEXT
+-----------------------------------+             +----------------------------------+
|      账号 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 错误):

  1. 每日报表手动触发 (type=daily)https://你的监控域名/?token=MANUAL_TOKEN&type=daily 立即执行一轮完整日报数据清洗,计算全局 CPU 指标与流量占比,向 TG 推送格式化运营报告。
  2. 紧急告警自动轮询 (type=alert)https://你的监控域名/?token=MANUAL_TOKEN&type=alert 主动拉取当前额度。若检测到已用配额超过阈值(如 90%)或错误率恶化,则立即推送红色高亮告警包。
  3. 系统部署自检 (type=verify)https://你的监控域名/?token=MANUAL_TOKEN&type=verify 验证 GraphQL 连通性、Google OAuth 凭据、KV 读写功能和 Webhook 注册状态。
  4. 状态 JSON 快照 (type=status)https://你的监控域名/?token=MANUAL_TOKEN&type=status 向外部监测程序提供标准的监控快照 JSON。

四、网页端完整部署步骤

步骤 1:创建 KV 命名空间

  1. 登录 Cloudflare Dashboard。
  2. 导航至 Workers 和 Pages -> KV,点击右上角 「创建命名空间」
  3. 命名为 zoio-net,并点击添加。

步骤 2:创建监控 Worker 并写入核心逻辑

  1. 导航至 Workers 和 Pages -> 点击 「创建」 -> 「创建 Worker」
  2. 命名为 workers-monitor,点击部署。
  3. 进入在线代码编辑器,将默认的 Hello World 代码清空,并复制 GitHub 原生 workers-monitor.js 提供的完整生产级代码。

步骤 3:绑定 KV 与配置环境变量

  1. 在 Worker 的详情页面中选择 「设置」 选项卡 -> 「绑定」 -> 「KV 命名空间」 -> 「添加绑定」。变量名称必须为 KV,空间选择 zoio-net
  2. 「变量和机密」 下,点击 「添加变量」 填入以下环境变量以完成配对:
环境变量名称 类型 说明及获取方式
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 环境变量结构示例:

JSON
[
  {
    "name": "img-proxy",
    "alias": "图片代理",
    "critical": true
  },
  {
    "name": "cdn-assets",
    "alias": "静态资源",
    "critical": false
  }
]

步骤 4:绑定 Cron 触发器与注册 Webhook

  1. 「设置」 -> 「触发器」 -> 「Cron 触发器」 中,点击 「添加 Cron 触发器」
  2. 输入表达式 */5 * * * *(意为每 5 分钟轮询一次,以保持告警的实时性并对准北京时间 23:55 日报窗口)。
  3. 通过浏览器访问以下 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 是官方目前最推荐的高解析度、强伸缩性分析平台

GRAPHQL
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 写入迅速写爆欠费!”

【深度剖析与防坑指南】

为了防止回调接口裸奔被刷,必须建立双向鉴权。


3. Google Blogger API 绑定短期失效导致浏览量为零

r/blogger 开发版反馈 u/OAuth_Expired: “我给 Workers 监控集成了 Google Blogger 统计,每天能把浏览量发在日报里。但是没跑满一个小时就提示 401 Unauthorized 错误,因为我代码里直接填入了 Access Token,那个每隔一小时就过期了。”

【深度剖析与防坑指南】

调用 Google OAuth2 API 必须理清 Token 轮转机制。


4. Cron 轮询导致每日 KV 写入瞬间逼近 1000 次限制

r/selfhosted 社区 u/KV_Limit_Hit 警示: “如果每 5 分钟轮询一次 Cron,每天大概要运行 288 次。如果代码每次运行都往 KV 里面写一次当前的已用额度,那仅这一个 Worker 就会在一夜之间消耗掉近 300 次 KV 写入额度。如果是主账户有几个 Worker 互相调用,1000 次的 KV 写限制在早上就被彻底透支了!”

【深度剖析与防坑指南】

免费 KV 命名空间的写入上限(1,000次/天)非常严格,无用的高频写是极大浪费。


结语

利用独立的监控账号和 GraphQL 数据流,您可以用极其微小的资源开销建立一套牢固的 Cloudflare Workers 用量预警网。这套方案除了让您安心自建服务之外,也能在 VPS 受到攻击的第一时间触发 Telegram 机器人对您进行防风控阻击。

配置完成后,请妥善保管好您的 Cloudflare 最小化 API Token,并在主账户防火墙中配合以下安全教程完成最终加固:

版权声明

作者: 易邦

链接: https://blog.e8k.net/posts/cloudflare-workers-monitor/

许可证: 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。