简简单单部署基于UptimeRobot的服务器状态监控

• March 20, 2021 • Read: 110 • 技术学习

UptimeRobot是一个国外免费的网站/服务器在线率监控服务,免费版可以每5分钟检查一次你设定的网站/服务,最多可以免费检查50个网站/服务。

当你的网站宕机时,UptimeRobot就会通过你资料里设置好的邮件或者短信通知你,需要注意的一点是UptimeRobot的短信服务不支持中国,想用的话可以通过Google Voice来接收,邮箱功能通知可以正常接收。

uptime-status是一款比较适合监控站点的多功能网站监控面板,是基于UptimeRobot接口制作的第三方面板,纯静态环境,无需PHP和数据库,可以放在任何支持静态网页的云空间里,食用简单。
本站效果预览https://status.worldline.top/
效果预览

平台注册及配置

「一」注册账号&添加监控
因为是基于UptimeRobot的API工作的,所以首先需要在这个平台注册账号并添加监控网站。
打开官网https://uptimerobot.com/,注册时最好不要选择QQ邮箱,如果收不到邮件需要在登陆页面进行登录,然后按失败提示点击Resend重发邮件,一般三次重发就能够收到。
和CloudFlare类似,有多个套餐,有免费的不白嫖他?果断选择免费版

「二」添加监控器
进入Dashboard控制面板页面,点击左上角Add New Monitor。
添加监控
可选多种监测方式,针对域名进行监控可以选择HTTP(s)方式,当然也可以对IP及端口按需选择。在Friendly Name填入易记的备注名称。
选择监测方式

「三」获得API Key
在My Settings中找到API Settings点击第二个Monitor-Specific API Keys,搜索之前起的Friendly Name,点击选择搜索到的项目名字,然后会得到一串字符,复制它。

Monitor-Specific API Keys用于展示账户下的特定监控,需要输入特定监控项目名使用。
Read-Only API Key用于展示账户下的所有监控项目,但可能不方便排序。

开始搭建

「一」下载uptime-status项目源代码
下载最新版https://github.com/yb/uptime-status/releases/latest

「二」解压缩

「三」修改config.js
代码中有注释可参考,修改ApiKeys对象,将刚刚在官网复制的API Key替换或增加进去。

基于Cloudflare Workers搭建UptimeRobot API代理,以解决官网API跨域问题

使用默认的官网API可能会出现跨域错误,此时可以选择白嫖CF的Workers搭建代理

「一」复制官方代码

const handleRequest = async ({ request }) => {
  let url = new URL(request.url);
  let response = await fetch('https://api.uptimerobot.com' + url.pathname, request);
  response = new Response(response.body, response);
  response.headers.set('Access-Control-Allow-Origin', '*');
  response.headers.set('Access-Control-Allow-Methods', '*');
  response.headers.set('Access-Control-Allow-Credentials', 'true');
  response.headers.set('Access-Control-Allow-Headers', 'Content-Type,Access-Token');
  response.headers.set('Access-Control-Expose-Headers', '*');
  return response;
}

addEventListener('fetch', (event) => {
  event.respondWith(handleRequest(event));
});

「二」创建Worker实例
创建Worker实例,将代码复制进脚本编辑区,复制完成后点击保存并部署,然后复制子域为.workers.dev的URL
创建并编辑Worker

「三」替换默认的API
回到面板文件目录,修改config.js中的ApiDomian为上一步复制的Worker域名。

搭建完成!

将文件夹上传至服务器,设置网站后可直接访问,无需其他环境~