Uptime Kuma 实战:一条命令给自建服务装上 24 小时值班的哨兵
折腾自建服务最怕什么?不是配置难,也不是升级…
折腾自建服务最怕什么?不是配置难,也不是升级烦,而是服务半夜挂了你自己还不知道。等你第二天打开才发现——相册打不开了、博客 502 了、内网穿透也断了,白白耽误一整天。今天给大伙推荐一个我用了两年多的小工具 Uptime Kuma:一个开源、自托管的服务监控面板,界面清爽、部署只要一条命令,能实时盯住你所有服务的健康状态,挂了第一时间通知你。
它是什么
Uptime Kuma 是 GitHub 上 5 万多 star 的开源项目,作者 Louis Lam。本质上它是一个「服务可用性探针」,可以定时去探测 HTTP 接口、TCP 端口、DNS 记录,甚至 Docker 容器状态和 Push 心跳。检测到异常就按你配置的方式告警,支持 Telegram、邮件、钉钉、企业微信、Webhook、ntfy 等几十种通知渠道,几乎覆盖了所有常用 IM。
一条命令部署
部署非常简单。我习惯用 docker compose 统一管理,新建一个目录,写个 compose 文件:
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
ports:
- "3001:3001"
volumes:
- ./data:/app/data
restart: always
然后 docker compose up -d,浏览器打开 http://服务器IP:3001,首次访问会让你创建管理员账号,之后就能用了。整个流程从零到跑起来不超过三分钟。
添加监控项
登录后点「添加监控项」选类型:监控博客选 HTTP(s) 填 URL;监控数据库选 TCP 填 IP 和端口;监控内网机器在不在线选 Ping。设置好检测间隔(默认 60 秒)和失败重试次数后保存,它会自动生成一张状态图,绿色是正常、红色是出问题,一眼就能看清全局。
告警通知
这是它最有价值的地方。点右上角「设置 → 通知」添加通知方式。以 Telegram 为例:先去 @BotFather 建个机器人拿到 token,再用 @userinfobot 拿到自己的 chat_id,填进去点一下测试,能收到消息就说明通了。之后每个监控项都能单独绑定通知,也可以设成全局默认,省得挨个配。
进阶玩法
除了监控,它还自带公开状态页功能,能生成一个只读链接给外人看,把自己的 uptime 展示出来,挺有面子。另外它原生支持多语言,界面可以直接切成中文,对英文不敏感的朋友很友好。
这工具我用了两年多,最大的感受是「安心」。以前服务挂了全靠手动发现,现在手机一响就知道哪个服务红了,半夜也能爬起来修。它资源占用极小,512MB 内存的小鸡都能跑得动,强烈建议每个玩自建的朋友都装一个。
