使用 Uptime Kuma 监测网站可用性

最到年底了,最近没折腾啥东西,正发愁。

机缘巧合,接触到了 Uptime Kuma 这款产品,想到了之前在迪士尼玩被甲方抓了更新证书,顿时觉得这东西应该对我有用。

那么就搞这个吧!

图片 Pixiv ID = 95148804

部署

Uptime Kuma 产品推出已经有不短的时间了,产品本身一直迭代,文档也挺友好,跟着文档很轻松就把服务起来了。

使用 Docker 安装 Uptime Kuma

在配置完 Docker 环境后,简单键入以下命令即可:

1
docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1

参数都很直观,如果和自己服务器上现有服务冲突的(比如端口),自行修改下。

访问 http://<server_ip>:3001 按照流程引导操作完即可进入主界面,这时候已经可以正常使用了。

配置 Nginx 反代

但这 HTTP 外加挂着个非常规端口是不是不优雅?

确实,而且也不太安全,所以再次请出 Nginx 反代来助其一臂之力。

不过在这之前先要做点微小的工作。

在 Uptime Kuma 仪表盘点右上角选 设置 - 反向代理,将 HTTP 头可信的代理类字段 开关打开并保存。

「微小的工作」

接着来配置 Nginx:

1
vim uptime_kuma.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
server {
listen 80;
server_name uptime_kuma.neko7ina.com;
return 301 https://$server_name$request_uri;
}

server {
listen 443 ssl http2;
server_name uptime_kuma.neko7ina.com;

ssl_certificate /home/syncthing/ssl/cert.pem;
ssl_certificate_key /home/syncthing/ssl/key.pem;

location / {
proxy_set_header Host $host;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:3001;
}
}
1
2
nginx -t
nginx -s reload

使用

用起来也是很简单,仪表盘左侧 添加监控项 添加目标网站,按照个人需求修改一些参数和选项就行了。

比如这个 证书到期时通知 是吧,对我就很有用,最早会在失效前 21 天就通知了,告别在迪士尼被抓更新证书。

刚好,平常常逛的一个网站 P9 今天挂了,也加到监控项中看看效果。

挂了就会像这样

通知

那我也不可能 24 小时盯着仪表盘看呀,所以有问题得通知到我才行。

Uptime Kuma 支持相当多的通知推送方式,我听过的、没听过的、国内的、国外的全都有。

本来打算配个比较泛用的邮件通知(SMTP),结果 QQ 邮箱的搞了半天也没搞起来。

在剩下的通知方式里挑挑捡捡,发现有个飞书刚好我们公司在用,那么就配这个吧!

飞书通知

要用飞书通知,得先整个机器人。

要整个机器人,得先整个群。

于是我们先建个群,点加号然后选择 创建群组 即可建立个人群。

创建群组

然后点右上角三个点,选择 设置 - 群机器人 - 添加机器人 - 自定义机器人 - 添加,填好名称和描述,成功创建机器人。

这时候就可以看到机器人的 WebHook 地址了,复制这个。

回到 Uptime Kuma,点右上角选 设置 - 通知 - 设置通知 打开设置通知详情,通知类型选择 飞书,显示名称按喜好修改,第三项粘贴从飞书那复制过来的 WebHook 地址。

点一下测试,很快嘛,测试通知瞬间就过来了。

测试通知

测试没问题就可以保存了,如果像我这样是首个通知,也可以学我把 默认开启应用到所有现在监控项 勾上省点事。

虽然我也没几个监控项就是了。

刚好前面 P9 还挂着,拿来测试一下通知。

P9 通知

写在最后

Uptime Kuma 的功能实际上并不仅限于此,但这么点对我来说就很足够了。

考虑到以后需要长期维护的甲方服务越来越多,提前未雨绸缪一下,也不是件坏事吧。

噢对了,最后 P9 的线上服务恢复了。

P9 恢复了