当你的服务器或者网站越来越多,就需要一个实时的监控工具来了解连通性,如果发送宕机等情况也能第一时间知道。网上有很多不错的相关项目,这里就介绍一款适合自建的开源项目:Uptime Kuma。

Uptime Kuma 是一个开源的监控工具,功能类似于 Uptime Robot。支持 HTTP(s) / TCP / HTTP(s) 关键字 / Ping / DNS 记录 / Push / Steam 游戏服务的实时监控,并且搭建比较简单,界面也很简洁大方(查看官方的在线演示)。服务下线通知也支持很多种方式,常见的 Telegram, Discord, Gotify, Slack, Pushover, Email (SMTP) 都能很好的支持,以及其它多达 70+ 种消息推送方式。经过一段时间的使用,感觉很不错,完全能满足一般个人用户或者是小型项目的监控需求。
环境准备
Uptime Kuma 支持脚本或者 Docker 安装运行,比较简单,官方文档有详细的介绍,就不再赘述,这里介绍下使用 Node.js 手动搭建的过程。Uptime Kuma 需要 Node.js 14 或者更高的版本。
以下演示系统为 Debian 11,为了方便默认采用 root 用户执行命令。
安装 Node.js 和 NPM
目前 Debian 11 官方库的 Node.js 版本为 v12.22.5 版本,npm 为 7.5.2 版本,不满足要求,因此需要安装更高的版本,可以安装由 NodeSource 提供的 Node.js 官方二进制发行版。
使用最新版本
截至目前 (2022-01-07),Node.js 的最新版本为 v17.x
# Using Ubuntu
curl -fsSL https://deb.nodesource.com/setup_current.x | sudo -E bash -
sudo apt-get install -y nodejs
# Using Debian, as root
curl -fsSL https://deb.nodesource.com/setup_current.x | bash -
apt-get install -y nodejs
使用 LTS 版本(推荐)
我这里安装的是 LTS(长期支持)版本 v16.x
# Using Ubuntu
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs
# Using Debian, as root
curl -fsSL https://deb.nodesource.com/setup_lts.x | bash -
apt-get install -y nodejs
检查 Node.js 和 NPM 版本:
node -v
npm -v
安装 Uptime Kuma
获取最新的仓库并安装:
git clone https://github.com/louislam/uptime-kuma.git
cd uptime-kuma
npm run setup
安装完成后可以直接运行:
node server/server.js
默认会运行在 3001 端口上,可以通过浏览 http://localhost:3001 检查是否运行成功。打开页面应该会出现添加用户界面:

登录后就进入了后台控制面板页面,此时你就可以点击左上方的按钮添加第一个监控节点了,设置里面可以设置语言,支持中文。

后台运行
这里推荐使用 pm2 后台运行 Uptime Kuma。
安装 PM2:
npm install pm2 -g
在 uptime-kuma 目录下运行:
pm2 start server/server.js --name uptime-kuma
也可以加上 port 参数指定运行的端口:
pm2 start server/server.js --name uptime-kuma -- --port=80
设置重启服务器后自启动:
pm2 startup
pm2 save
补充一些 PM2 的常用命令:
pm2 list # 查看所有运行中的应用
pm2 stop 0 # 停止 id 为 0 的应用
pm2 restart # 重启
pm2 delete 0 # 删除 id 为 0 的应用
pm2 monit # 显示每个应用程序的CPU和内存占用情况
pm2 show [name] # 显示应用程序的所有信息
pm2 save # 保存当前应用列表
pm2 startup # 创建开机自启动命令
Nginx 反代
官方提供了 Nginx / Apache / Caddy 等常见 web 服务器的反代配置示例,这里就简单的写一下 Nginx 的示例:
server {
listen 443 ssl http2;
server_name sub.domain.com;
ssl_certificate /path/to/ssl/cert/crt;
ssl_certificate_key /path/to/ssl/key/key;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:3001/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
和一般反代的区别是加了 Upgrade 参数,因为 Uptime Kuma 使用了 webhook,因此必须加上这两行设置。
更新 Uptime Kuma
更新的话也很简单,先检查最新的文件:
git fetch --all
git checkout 1.11.1 --force
安装相关依赖并预构建:
npm ci --production
npm run download-dist
最后重启即可:
pm2 restart uptime-kuma
如果你认为这篇文章还不错,可以考虑为我充电 ⚡️