使用UptimeFlare部署你的无服务器状态监控页

我此前使用过better stack,Uptimekuma这些监控的工具,但是better stack纯英文界面且免费用户有限制,Uptimekuma需要服务器部署,如果服务器宕机或者网络出现问题则会出现误判的问题,所以经过我的搜索,发现了一个可以直接部署在cloudflare边缘网络的项目,UptimeFlare(FlareWatch也是此类的但是貌似没汉化)。
它有那些功能?
开源,易于部署(全程无需本地工具,耗时不到 10 分钟),且完全免费
监控功能
最多支持 50 个 1 分钟精度的检查
支持指定全球 310+ 个城市 的监控节点
支持 HTTP/HTTPS/TCP 端口监控
最多 90 天的 uptime 历史记录和 uptime 百分比跟踪
可自定义的 HTTP(s) 请求方法、头和主体
可自定义的 HTTP(s) 状态码和关键字检查
支持 100 多个通知渠道 的宕机消息通知
可自定义的 Webhook
多语言支持 (中文/英文)
状态页面
所有类型监控的交互式 ping(响应时间)图表
响应式 UI,自适应PC/手机屏幕,及亮色/暗色系统主题
配置选项丰富的状态页面
可使用您自己的域名与 CNAME
可选的密码认证(私人状态页面)
用于获取实时状态数据的 JSON API
准备工作
一个GitHub账号
一个Cloudflare账号
开始部署
先创建自己的仓库
前往UptimeFlare官方仓库
点击右上角的Use this temple,然后选择创建一个新仓库

然后给仓库命名,随便一个都可以,我这里已经创建了,另外如果不想让你的这个仓库被访问到比如如果你配置的监测有IP地址那就将可见性设置为private(私密)

创建后会报错先忽略,因为还没配置Token,Github无法与Cloudflare通信
创建Cloudflare的Token(注意是账户token)
新版cloudflare页面发生了不少变化,登陆cloudflare后点击右上角的人像图标,选择配置文件,选择API令牌,选择创建API令牌


选择API令牌模板“编辑Cloudflare Workers”,注意,因为项目放弃了KV存储使用D1,所以需要在权限里面增加D1权限


随后将账号和区域设置为所有(方便操作),如果你的账号和区域不止一个且注重安全可以按照你的实际情况选择。创建完成后会显示Token,需要保存在只有你自己知道的地方,并且牢记,因为Token只展示一次。
在项目里添加Token
上一步已经获取了Cloudflare的Token,现在需要将其填入到你的项目里,现在前往你的仓库,在Settings里找到Actions,在这里添加

设置Name为CLOUDFLARE_API_TOKEN,secret就是你的Token
配置文件
回到你的仓库页面,在根目录最底下有一个uptime.config.ts的文件,你所有的配置都在这个文件里修改
具体的修改内容不做过多说明,文件内有注释可以参考,不过对应的中文注释如下,仅供参考。
// 页面配置
const pageConfig = {
// 状态页面的标题
title: "lyc8503's Status Page",
// 显示在状态页面头部的链接,可以设置 `highlight` 为 `true` 来高亮显示
links: [
{ link: 'https://github.com/lyc8503', label: 'GitHub' },
{ link: 'https://blog.lyc8503.net/', label: 'Blog' },
{ link: 'mailto:me@lyc8503.net', label: 'Email Me', highlight: true },
],
}
// 工作器配置
const workerConfig = {
// 定义所有监控项
monitors: [
// HTTP监控示例
{
// `id` 应该是唯一的,如果 `id` 保持不变,历史记录将被保留
id: 'foo_monitor',
// `name` 用于状态页面和回调消息
name: 'My API Monitor',
// `method` 应该是一个有效的HTTP方法
method: 'POST',
// `target` 是一个有效的URL
target: 'https://example.com',
// [可选] `tooltip` 仅用于状态页面显示工具提示
tooltip: 'This is a tooltip for this monitor',
// [可选] `statusPageLink` 仅用于状态页面的可点击链接
statusPageLink: 'https://example.com',
// [可选] `expectedCodes` 是可接受的HTTP响应代码数组,如果未指定,默认为2xx
expectedCodes: [200],
// [可选] `timeout` 以毫秒为单位,如果未指定,默认为10000
timeout: 10000,
// [可选] 要发送的头部
headers: {
'User-Agent': 'Uptimeflare',
Authorization: 'Bearer YOUR_TOKEN_HERE',
},
// [可选] 要发送的主体
body: 'Hello, world!',
// [可选] 如果指定,响应必须包含关键词才被视为正常运行
responseKeyword: 'success',
// [可选] 如果指定,检查将在您指定的区域运行,
// 在设置此值之前,请参考文档 https://github.com/lyc8503/UptimeFlare/wiki/Geo-specific-checks-setup
checkLocationWorkerRoute: 'https://xxx.example.com',
},
// TCP监控示例
{
id: 'test_tcp_monitor',
name: 'Example TCP Monitor',
// 对于tcp监控,`method` 应为 `TCP_PING`
method: 'TCP_PING',
// 对于tcp监控,`target` 应为 `主机:端口`
target: '1.2.3.4:22',
tooltip: 'My production server SSH',
statusPageLink: 'https://example.com',
timeout: 5000,
},
],
notification: {
// [可选] apprise API服务器URL
// 如果未指定,将不会发送通知
appriseApiServer: "https://apprise.example.com/notify",
// [可选] apprise的接收者URL,参考 https://github.com/caronc/apprise
// 如果未指定,将不会发送通知
recipientUrl: "tgram://bottoken/ChatID",
// [可选] 通知消息中使用的时区,默认为 "Etc/GMT"
timeZone: "Asia/Shanghai",
// [可选] 发送通知前的宽限期(分钟)
// 只有在监控连续N次检查后仍然处于故障状态时才会发送通知
// 如果未指定,将立即发送通知
gracePeriod: 5,
},
// 您可以在这里定义多项维护
// 在维护过程中,状态页面将显示一个警报
//此外,相关的停机通知将被跳过(如有)
// 当然,如果不需要此功能,可以将其保留为空
const maintenances: MaintenanceConfig[] = [
{
// [可选] 受此维护影响的监控ID
monitors: ['foo_monitor', 'bar_monitor'],
// [可选] 如果未指定,则默认为“调度维护”
title: 'Test Maintenance',
// 维护说明将显示在状态页
body: 'This is a test maintenance, server software upgrade',
// 以 UNIX 时间戳或 ISO 8601 格式开始维护
start: '2020-01-01T00:00:00+08:00',
// [可选] 以UNIX时间戳或ISO 8601格式结束维护时间
// 如果未明确,维护工作将被视为持续进行
end: '2050-01-01T00:00:00+08:00',
// [可选] 状态页面维护提醒的颜色,默认为“yellow”
color: 'blue',
},
]
},
}
// 不要忘记这个导出,否则编译将失败
export { maintenances, pageConfig, workerConfig }注意:不要删除maintenance这一部分,尽管大部分情况下用不到,一旦删除将会部署失败,保持为const maintenances: MaintenanceConfig[] = [];即可
部署
当你修改好你需要增加的内容后直接在你自己的仓库上点击commit即可,Github会自动开始帮你部署,如果发现了错误就去查看是什么原因(大部分都是语法错误,注意括号就行)
自定义访问
当成功上线后你的cloudflare仪表盘里会出现两个uptime相关的内容,选择上方的uptimeflare去配置自己的域名即可(该步骤过于简单不提供图片教程)(如果没有自己的域名(都部署状态监控了应该都有自己的域名了),则就使用Cloudflare提供的默认域名)
进阶教程:自定义特定区域检查(可选)
一般来说部署好后Cloudflare会开始自动选择区域进行检查,但是难免会遇到你的服务器在香港,但是cloudflare使用美国的边缘节点去检查你的网站,延迟会很高,于是选择配置特定区域就很有必要了。
修改也很简单,在monitors里每一个监控项里增加checkProxy:'worker://xxxx'即可(xxxx可以选择的项有wnam,enam,sam,weur,eeur,apac,oc,afr,me)具体代表哪个地区请参考cloudflare官方说明
为了方便,表格我贴出来了:








