📌 项目地址:louislam/uptime-kuma | ⭐ 93,748 颗星 | 🔧 JavaScript

louislam/uptime-kuma 项目插图

服务挂了没人知道,等用户来投诉才发现,这是自托管服务最尴尬的时刻。Uptime Kuma 干的就是这件事:定时探测你的服务,挂了立刻通过 Telegram、Discord、Slack、邮件(SMTP)等 90 多种渠道通知你。项目在 GitHub 上已有九万多 star,是目前自托管监控这个类别里最热门的选择。

它能监控什么

探测类型覆盖得相当全:HTTP(s)、TCP、HTTP(s) 关键字、HTTP(s) Json Query、WebSocket、Ping、DNS 记录、Push、Steam 游戏服务器、Docker 容器。最短检测间隔 20 秒。

光告警还不够。它自带状态页功能,可以建多个状态页对外展示服务运行状况,还能把不同状态页绑定到不同域名。页面上有 Ping 图表和 SSL 证书信息。支持多语言和 2FA。

跟 Uptime Robot 这类 SaaS 比,值不值

我觉得判断标准很简单:你手上要盯的服务多不多。免费版 SaaS 的监控项数量和检测频率都有额度限制,服务一多很快就不够用。自己跑一个 Uptime Kuma 实例,监控多少项、多久测一次,都由你说了决定,数据也全在自己服务器上。

代价也得说清楚:监控机自己得活着。如果监控机和被监控服务在同一台机器上,机器整体宕机时不会有人来通知你。所以部署时监控机要和被监控服务分开,这是自托管监控的固有局限。

安装:两条命令的事

Docker Compose 方式:

mkdir uptime-kuma
cd uptime-kuma
curl -o compose.yaml https://raw.githubusercontent.com/louislam/uptime-kuma/master/compose.yaml
docker compose up -d

或者直接一条 docker 命令:

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

启动后访问 http://localhost:3001 就能看到界面。

三个细节别忽略:

  1. 数据目录不能放 NFS 上。README 明确说 NFS 文件系统不受支持,要映射到本地目录或卷。
  2. 默认监听所有网络接口。只想本机访问的话,把端口映射改成 -p 127.0.0.1:3001:3001,再配反向代理加 HTTPS。
  3. 镜像用 louislam/uptime-kuma:2,也就是 2.x 系列。

不用 Docker 也能跑

要求是主流 Linux 发行版(Debian、Ubuntu、Fedora、ArchLinux 等)或 Windows 10 x64 以上,Node.js >= 20.4,Git,外加用于后台运行的 pm2。FreeBSD 系列和 Replit、Heroku 这类平台不行。

git clone https://github.com/louislam/uptime-kuma.git
cd uptime-kuma
npm run setup

# 先试跑
node server/server.js

# 推荐用 PM2 后台运行
npm install pm2 -g && pm2 install pm2-logrotate
pm2 start server/server.js --name uptime-kuma

看实时日志用 pm2 monit。

动手前先玩玩 Demo

官方有 Live Demo,服务器在德国法兰克福,所有数据 10 分钟后自动删除。可以先上去点一圈,确认界面和功能符合预期再部署。

一个要紧的提醒

README 里有一条加粗的警告:Google 搜”uptime kuma”排第一的 uptimekuma.co 不是官方网站,项目方控制不了那个站。安装请只按 GitHub 仓库里的指南来,别从别处下载东西。

我的看法

如果你有两三个以上的服务需要确认在线状态,又不想为 SaaS 订阅掏钱,Uptime Kuma 基本是最省事的选择:部署成本低到只有一条 docker run,功能覆盖从探测、告警到对外状态页的完整链路。九万 star 不是白来的。

这篇文章对你有帮助吗?

发表回复