使用Upptime取代Uptimerobot
本文章编号为0025
本文章转载自Restent Ou的博客,请支持原创
文章作者:Restent Ou
文章链接:https://blog.gxres.net/posts/use-upptime-for-monitoring-websites
本文采用** **CC BY-NC-SA 4.0 许可协议,请根据许可协议内容规范转载。
正文
Upptime 是一个开源、完全基于 GitHub Actions, Issues 和 Pages 的网站监控项目。这篇文章将会简单介绍 Upptime,并提供一些 Upptime 的使用方法。
为什么是 Upptime
可能在大多数站长的印象里,好用的网站状态监控或许只有 UptimeRobot 和 Uptime Kuma 这两个……吧?但就上面的描述而言,它俩在此的弊端已十分明显:
- UptimeRobot 免费版的功能太少,如果想要更多的功能,你只能交钱;
- Uptime Kuma 成熟、功能完善且免费,但正如林林所言:** **如果服务器没崩,开往的服务应该也不会掉;如果服务器崩了,这个状态监控也监控不了了。
那么,有没有完美解决上面这两个弊端的方案呢?嗯,真有,便是今天的主角:Upptime。
根据开头第一段,你已经知道了 Upptime 完全基于 GitHub Actions, Issues 和 Pages,这正是 Upptime 的妙处:
- 用 GitHub Issues 报告网站的故障状态,同时也可以提起一个站点维护的 Issue;
- 用 GitHub Pages 发布网站状态监控页;
- 用 GitHub Actions 获取网站状态数据,同时处理 Issues 内的网站维护信息。
依靠 GitHub 的这三个服务,你就可以获得一个免费的、功能完善的网站状态监控服务。实在是妙不可言。
如何使用
Upptime 的官方文档并没有中文版本,所以看起来可能会比较吃力。不过,Upptime 大部分配置都集中在**.upptimerc.yml` 中、只有少数配置需要配置仓库的 Secrets,所以问题不是很大。这里会稍微讲一下我是怎么配置的。
请多加注意:这里的** 仓库的 Secrets 是 仓库设置里的 侧边栏的 Secrets and variables 项的 Actions 子项的 Secrets 部分。 **请不要选到 Variables 部分!!!
在你的个人账号 / 组织下创建一个 Upptime 模板
Upptime 仓库 的 Star 旁边有一个Use this template
,你只需要选中它的Create a new repository
子项、选择这个模板仓库的所有者(即 Owner,看你想要在个人账号还是组织下创建)以及仓库名称即可。
Include all branches 必须要勾选,别问为什么。
Upptime 每个月都需要使用数千分钟的构建时间,因此我建议将这个仓库设为公开。如果你将其设置为私密,那就得交钱,得不偿失。
启用 GitHub Pages
这里默认假定你已经创建好了 Upptime 的模板仓库。请前往仓库的** Settings
,并找到侧边栏的 **Pages
项。
让我们看到 Build and deployment 这一部分。第一个 Source 需要改为** Deploy from a branch;第二个 Branch 的分支选择 **gh-pages、目录保持 root 即可。做完这一切之后,点击 Save,这部分就算完成了。
修改 Upptime 配置文件
上面已经说到,Upptime 大部分配置都集中在.upptimerc.yml
中、只有少数配置需要配置仓库的 Secrets。所以我们首先将精力投在这个配置文件上。
配置仓库信息
Upptime 的 Action 将会把获取到的数据都存在仓库里,而它的网页便是通过 GitHub API 从仓库获取这些数据。而 Upptime 并不知道你的仓库的所有者是谁、仓库名称又是什么,所以需要你手动配置。
1 | # Change these first |
Upptime 甚至在配置文件的第一行加了一句
# Change these first
,让你意识到这个配置十分的重要。
添加需要监控的网站
仓库配置的下面便是需要检测的网站的配置了。如果主打一个简单粗暴、并且要求不复杂的话,这么写就可以了:
1 | sites: |
当然,Upptime 在这一块的配置项非常的多:标头、端口 TCP 测试、指定网站 icon、预期的 HTTP 状态码,等等。这里就看各位自己的需求、按文档的指示来添加了。因为项太多,我实在不想一条条搬过来
设定 CI 运行时间表
Upptime 给出了一个基于 Cron 语法的 CI 运行的时间表的配置项,供你按自己的喜好来设定运行时间。注意:间隔时间不能低于五分钟。
1 | workflowSchedule: |
如果你实在不知道怎么配置,保持默认即可,不要动。
设定监控网页的配置
再下来便是状态监控网页的相关配置了。
首先将目光放在链接的配置上:Upptime 允许你指定一个自定义域名,或是使用 GitHub Pages 启用后的默认域名(比如 s-complex.github.io/upptime
)。如果你需要使用自定义域名,请解除 cname
项的注释、填写你的自定义域名,再将 baseUrl
注释回去;如果你需要使用 GitHub Pages 启用后的默认链接,操作步骤和自定义域名的相反,注意 baseUrl
项只需要你填写域名后面的部分(比如 /upptime
)。
这一步不能忽视,因为**
cname
项和baseUrl
项不能同时存在。
再来看到老生常谈的**logoUrl
项和name
项,分别代表这个网页的图标(Favicon)和名称。这个就不需要多说了。
接着就是navbar
项,也不需要多言、你配置的项将会放置在网页标题的右侧。
我的仓库里还有一个 singleCommit
项,这会在上传网页内容到 gh-pages
分支时、强制将 Commits 数量重置为 1。这个看你喜好吧……
下述是这一块的配置的示例:
1 | status-website: |
设置用户代理(User agent)
若需要向 GitHub API 发出请求,请求方必须要包含一个有效的用户代理标头。Upptime 官方建议使用自己的 GitHub 用户名作为标头:
1 | user-agent: "slivermoe (https://github.com/s-complex/upptime)" |
这里是写的 SliverRiver 的 GitHub 用户名。目前 SliverRiver 的 GitHub 账号主要负责 CI 任务相关的事宜。
写到这里就差不多了。将你写好的这些内容提交到分支,观察一下 GitHub Actions 有没有开始工作。没有的话,可以选中侧边的 Setup CI,接着手动触发这个 workflow 即可。
配置 Telegram 通知
由于 Telegram 通知是我的 Upptime 项目里唯一一个需要配置仓库 Secrets 的项,所以就单独拎出来讲了。
其实原理也并不复杂,在仓库的 Secrets 里添加这三个项:
- NOTIFICATION_TELEGRAM,值是true`;
- NOTIFICATION_TELEGRAM_BOT_KEY,值是你的 Telegram 机器人密钥;
- NOTIFICATION_TELEGRAM_CHAT_ID,值可以是你的账户 ID,可以是你的群聊 ID,甚至是频道 ID,看你自己的需求。
这里已经假设你创建好了 Telegram 机器人、并获得了对应的机器人密钥。
如果你不知道你的 账户 ID / 群聊 ID / 频道 ID,请自行私聊 @userinfobot,并将你的 个人发言 / 群聊里的发言 / 频道的消息转发给这个机器人。
指正:对于群聊,这个方法仅适用于群里有管理员开启了匿名发言的情况。你可以考虑用 @raw_data_bot 代替。
配置好之后,我个人是手动触发了一次 Setup CI。因为我的NOTIFICATION_TELEGRAM_CHAT_ID
配置到了我的通知频道,所以一旦网站出现问题,Upptime 便会通过我的机器人在这个频道发送故障通知、并附带上关联的 GitHub Issue 链接。)
文章链接:https://blog.gxres.net/posts/use-upptime-for-monitoring-websites
本文采用** **CC BY-NC-SA 4.0 许可协议,请根据许可协议内容规范转载。