发布时间:2026-09-10 05:03 更新时间:2026-09-10 05:03 阅读量:0
网站上线之后,服务器是否在线、首页能不能打开、SSL证书是否过期,这些状态如果全靠人工去盯,既费精力又容易漏。市面上虽然有不少第三方监控服务,但免费额度有限,付费价格也不低,而且把网站健康数据交给别人,多少有点不放心。Uptime Kuma 是一款开源的监控工具,支持自托管,界面清爽,功能也够用,很适合站长在自己的服务器上部署一套。
Uptime Kuma 可以监控 HTTP/HTTPS、TCP、Ping、DNS 等常用协议,也能检查关键词是否出现在页面里。它自带一个 Web 控制台,能直观看到每个监控项的状态历史和响应时间。更重要的是,它内置了多种通知通道,包括邮件、Telegram、Discord、钉钉、企业微信等,还支持通过 Webhook 自定义对接。监控出现异常时,它会按你设定的规则发送告警,恢复后也能发通知。
部署 Uptime Kuma 并不复杂,常见的方式有两种:用 Docker 一键启动,或者直接用 Node.js 运行。对于多数站长来说,Docker 方式最省事,只要服务器装了 Docker 和 Docker Compose 就能跑。下面以 Docker 为例,先创建一个存放数据的目录,再写一个 docker-compose.yml。
mkdir -p /opt/uptime-kuma
docker run -d --name uptime-kuma \
-p 3001:3001 \
-v /opt/uptime-kuma:/app/data \
--restart=always \
uptime-kuma这里把端口映射到宿主机的 3001,数据目录挂载到 /opt/uptime-kuma。如果你用 Docker Compose,可以写成类似下面这样,然后执行 docker compose up -d。
version: '3'
services:
uptime-kuma:
image: uptime-kuma
container_name: uptime-kuma
ports:
- "3001:3001"
volumes:
- /opt/uptime-kuma:/app/data
restart: always启动后,浏览器访问 http://服务器IP:3001 即可进入初始化页面,设置管理员账号和密码。首次登录后,建议在设置里把语言改为中文,操作起来会更顺手。需要注意的是,Uptime Kuma 默认用 HTTP 明文访问,如果部署在公网,最好通过 Nginx 反向代理并启用 HTTPS,避免监控面板暴露在裸奔状态。
登录后台后,点击“添加监控”即可新建一个探测任务。监控类型选择 HTTP(S),填上要监控的网址,比如 https://example.com,设置一个合适的超时时间,默认 60 秒就可以。间隔时间建议根据监控项的重要程度来定,频繁探测会消耗服务器资源,也可能被目标站点限流,一般每 5 分钟一次已经足够。
如果网站是动态页面,可以设置“关键词”为页面里必须出现的文本,这样当页面内容异常但 HTTP 状态码仍为 200 时也能及时察觉。Uptime Kuma 还支持为每个监控项设定“最大重试次数”,比如连续失败 2 次才触发告警,能有效避免因网络抖动产生误报。
接下来是配置通知,这是整个流程里最容易踩坑的部分。点击右上角头像进入设置,找到“通知”选项。Uptime Kuma 内置了多种通知渠道,我们以邮件和微信为例。邮件告警需要填 SMTP 信息,不同邮箱服务商的要求略有差异,使用 QQ 邮箱或网易邮箱时,需要开启 SMTP 并获取授权码,而不是直接用登录密码。配置后可以点击“发送测试”,确保能正常收到邮件。
微信通知方面,Uptime Kuma 没有直接提供个人微信的推送接口,但可以借助“Server酱”这类推送服务间接实现。Server酱的原理是给用户分配一个 SendKey,调用它的 URL 即可把消息推送到微信。在 Uptime Kuma 的通知类型里选择 Webhook,填入 Server酱的推送地址,再把消息体调整为 JSON 格式即可。具体参数可以参考 Server酱的官方文档,这里给出一个简单的请求示例。
curl -s -X POST "https://sctapi.ftqq.com/你的SendKey.send" \
-H "Content-Type: application/json" \
-d '{"title":"网站挂了:{{NAME}}","desp":"{{URL}} 检测失败,请及时处理"}'在 Uptime Kuma 的 Webhook 配置里,需要把浏览器标识符和请求方法设置正确。Uptime Kuma 的 Webhook 支持自定义 Headers 和 Body 模板,通知告警时会把监控名、URL、失败原因等变量自动替换进去。如果不想用 Server酱,也可以自建一个企业微信机器人,直接在群聊里接收告警。企业微信机器人的配置方法是在目标群管理中添加一个 Webhook 机器人,得到一个类似 qyapi.weixin.qq.com 的地址,然后用 POST 发送包含 msgtype 为 text 的 JSON 数据。
另外,Uptime Kuma 还支持在通知里设置“启用提醒”的时间段,比如只在工作时间发送邮件,休息时段只发微信,避免深夜被无关紧要的告警吵醒。也可以给不同监控项分配不同通知渠道,比如把数据库监控的告警只发给运维群。
一个容易忽略的细节是,Uptime Kuma 本身也依赖服务器和网络环境,如果服务器宕机或网络中断,Uptime Kuma 自己也可能无法发出通知。所以监控工具的部署位置要尽量稳定,有条件的话可以在另一台低配 VPS 上再部署一个作为哨兵,或者使用 Uptime Kuma 的心跳功能,定期 ping 一下,保证监控自身在正常工作。
Uptime Kuma 的数据默认存储在 SQLite 数据库里,备份非常简单,只需要拷贝 /opt/uptime-kuma 下来的整个目录即可。建议设置一个定时任务,每天将备份文件上传到对象存储或另一台服务器。恢复时只要把数据目录替换回去,再重启容器就能还原,不用额外执行迁移命令。
关于监控间隔和告警数量,Uptime Kuma 允许每个监控项单独设置通知间隔和重复次数。默认情况下,故障发生后它会持续发送告警,直到恢复。如果你不想被频繁打扰,可以在通知设置里勾选“仅故障时通知”或“恢复时通知”,也可以调整重试间隔。比如设置故障后每 30 分钟通知一次,最多通知 5 次,剩余情况只保留面板上的状态记录。
还有些朋友会问,Uptime Kuma 能不能同时监控多个地区?它不像商业监控服务那样有分散的探测节点,只能由部署位置单向探测。如果需要多地监控,就在不同地域的服务器上分别部署实例,然后通过 Uptime Kuma 的“状态页面”功能把多个实例的数据聚合展示。状态页面可以生成一个公开链接,方便访客查看你的服务运行状态,也算是一个加分项。
最后想说的是,自建监控虽然省了订阅费,但服务器的月租成本、维护精力还是要算进去。如果你的网站本身就跑在一台低配 VPS 上,再塞一个 Uptime Kuma 可能会导致资源紧张。建议单独用一台配置很低的机器来跑,或者干脆和已有服务共存,但要在监控项里排除掉自己占用端口带来的干扰。Uptime Kuma 提供了端口监控、心跳监控、证书到期提醒等实用功能,把这些用起来,日常运维会轻松不少。对了,具体版本功能与配置细节请以官方文档为准,部署时也多参考 Uptime Kuma 的 GitHub Releases 说明。
| 📑 | 📅 |
|---|---|
| 带宽跑满找元凶:iftop、nethogs与tcpdump排查详解 | 2026-09-10 |
| WordPress被挂马后的排查与清理:从文件到数据库的完整路径 | 2026-09-10 |
| 访问日志不会看?goaccess与awk帮你快速定位异常请求 | 2026-09-09 |
| Nginx伪静态规则从零配置:WordPress与ThinkPHP的rewrite写法详解 | 2026-09-09 |
| WordPress搬家进阶:用WP-CLI替换数据库不损害序列化数据 | 2026-09-09 |
| MySQL慢查询日志开启与参数分析:用mysqldumpslow定位拖慢网站的SQL | 2026-09-10 |
| Nginx 502/504 排查:从错误日志到PHP-FPM进程池状态 | 2026-09-10 |
| 宝塔面板安全加固:面板端口、安全入口、SSL与登录告警设置 | 2026-09-11 |
| 服务器磁盘被写满的排查流程:df与du定位、日志切割与清理注意事项 | 2026-09-11 |
| HTTPS证书有效却提示不安全:混合内容的定位与批量修复 | 2026-09-12 |