自建监控:Uptime Kuma
如何为您的网站和服务设置可用性检查并通过 Telegram 或 Discord 通知,以及如何配置让它只在真正重要时才提醒您。
更新于 2026年8月23日
您机器的控制面板会显示 CPU、流量和内存图表,但它并不知道您的站点是否响应、数据库是否存活。要做到这一点,您需要自己的监控工具。Uptime Kuma 是最简单的选择:一个容器、一个 Web 界面、数十种通知方式。
安装
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
restart: unless-stopped
volumes:
- ./data:/app/data
ports:
- "127.0.0.1:3001:3001"
docker compose up -d
端口有意绑定到本地接口:监控面板不应暴露到外网。请通过带证书和密码的 Web 服务器访问它,或者通过 SSH 隧道:
ssh -L 3001:127.0.0.1:3001 root@<machine-address>
然后在浏览器中打开 http://localhost:3001;第一个用户将成为管理员。
监控什么
从小处着手,否则您会被噪音淹没:
- 每个站点首页的 HTTP 检查——响应码和响应时间。
- 对关键 API 的 HTTP 检查,并在响应中检查关键字。页面可能返回 200,却仍然显示错误。
- 数据库或游戏服务器的 TCP 端口。
- 证书到期——Kuma 会在证书到期前 N 天提醒您。
- 针对计划任务的 Push 检查:脚本成功运行后会访问一个唯一地址,如果没有访问,您就会收到告警。与计划任务配合使用效果很好。
60 秒的间隔几乎总是足够的。重试次数——2-3 次,否则单个丢失的网络数据包就会触发误报。
不要把站点监控放在该站点所在的同一台机器上。如果机器宕机,监控工具也会随之宕机,而您永远不会知道。对于外部站点,请把 Kuma 放在单独的机器上,在这台机器上只检查内部服务。
通知
设置一个 Telegram 机器人或 Discord webhook,并在通知部分添加它。不要使用邮件渠道:机器到端口 25、465 和 587 的出站连接在按需开通之前是关闭的,Kuma 的邮件根本发不出去——请参阅邮件服务器。
有用的习惯:
- 为“宕机”和“证书即将到期”设置不同的渠道。前者需要立即反应,后者——在一周内处理即可。
- 启用恢复通知。没有它们,您无法判断故障是否已经结束。
- 在配置期间发送一条测试消息。一半的问题都是 token 错误,而您只有在真正发生故障时才会发现这一点。
资源与维护
该容器占用 150-250 MB 内存,在 VDS-1 上运行绰绰有余。数据库会随检查历史增长:请在设置中将保留期设为 90-180 天,否则一年后文件会增长到数 GB——请参阅磁盘空间。
./data 目录保存着该服务的全部状态。请把它纳入您的备份:手动恢复三十多个检查项可不是件愉快的事。
常见错误
- 按 IP 地址而不是域名进行检查。 证书和虚拟主机不会被检查,DNS 故障也会被忽略。
- 阈值过于敏感。 每次超过 2 秒就告警,意味着人们会不再看通知。
- 面板无密码暴露到外网。 它会显示您的整个基础设施:地址、端口、服务名称。