Uptime Kuma 是一款自建的服务状态监控工具,界面美观、部署简单,支持 HTTP(S)、TCP、DNS、Ping 等多种监控类型,并可通过 Telegram、邮件、Slack 等多种渠道发送告警通知。在搬瓦工 VPS 上运行它,可以实时掌握自己所有服务的运行状态。
本文要点
- Docker 一键部署 Uptime Kuma
- 添加监控项与设置检测间隔
- 配置 Telegram 等通知渠道
- Nginx 反向代理与 SSL 保护管理界面
部署 Uptime Kuma
使用 Docker 单容器即可,数据持久化到命名卷:
docker run -d \
--name uptime-kuma \
-p 3001:3001 \
-v uptime-kuma:/app/data \
--restart unless-stopped \
louislam/uptime-kuma:latest或使用 docker-compose.yml:
# docker-compose.yml
services:
uptime-kuma:
image: louislam/uptime-kuma:latest
container_name: uptime-kuma
ports:
- "3001:3001"
volumes:
- uptime-kuma:/app/data
restart: unless-stopped
volumes:
uptime-kuma:启动后访问 http://服务器IP:3001 完成管理员账号创建。
立即保护管理界面
Nginx 反向代理 + SSL
创建 /etc/nginx/conf.d/uptime.conf:
server {
listen 443 ssl;
server_name uptime.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/uptime.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/uptime.yourdomain.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
}
}WebSocket 支持必须
Upgrade 和 Connection 头,否则界面无法正常刷新。添加监控项
登录后点击"Add New Monitor",常用配置如下:
| 监控类型 | 适用场景 | 检测方式 |
|---|---|---|
| HTTP(S) | 网站、API 接口 | 检查 HTTP 状态码 |
| TCP 端口 | 数据库、SSH 端口 | 检查端口是否可达 |
| DNS | 域名解析 | 检查 DNS 响应 |
| Ping | 基础连通性 | ICMP ping |
建议检测间隔设置为 60 秒,重试次数设为 3,避免网络抖动导致误报。
配置通知渠道
在"Settings → Notifications"中添加通知方式。以 Telegram 为例:
- 在 Telegram 中找到 @BotFather,创建一个新 Bot,获取 Bot Token
- 给 Bot 发一条消息,访问
https://api.telegram.org/bot<token>/getUpdates获取 Chat ID - 在 Uptime Kuma 通知配置中填入 Bot Token 和 Chat ID
- 点击"Test"验证是否收到测试消息
状态页
Uptime Kuma 支持创建公开"状态页",展示各服务的可用率历史,适合向用户公示服务状态,可绑定独立域名。
小结
- 单容器、一条命令即可部署,资源占用极低
- 支持多种监控类型与通知渠道,覆盖常见监控场景
- 反代配置必须包含 WebSocket 支持
- 可利用状态页向用户展示服务可用率
常见问题
Uptime Kuma 可以监控多少个服务?
理论上不限数量,实际受服务器性能和网络影响,个人使用几十到上百个监控项完全没有问题。
通知太频繁怎么办?
可以在每个监控项设置「重试次数」和「重试间隔」,只有连续多次失败才发出通知,有效过滤偶发的网络抖动。
数据存在哪里?如何备份?
所有数据存储在 Docker 命名卷 uptime-kuma 中。可用 docker run --rm -v uptime-kuma:/data alpine tar czf - /data > backup.tar.gz 导出备份。