用 Uptime Kuma 监控网站:从部署到收到第一条故障提醒
在 Zenavo 上用模板部署 Uptime Kuma,添加网站与接口监控,配置 Telegram 或邮件通知,验证故障与恢复提醒,并做好数据卷备份。
本文亦提供 English、繁體中文、日本語、Español 和 Bahasa Indonesia。
网站或服务上线后,与其等用户来告诉你“打不开了”,不如让监控在证书过期或服务宕机的第一时间发消息提醒你。
Uptime Kuma 是一个轻量、开源的自托管监控工具:支持 HTTP(s)、关键字、TCP 端口、DNS、证书到期等多种检查方式,自带状态页和几十种通知渠道(Telegram、飞书、企业微信、Slack、邮件、Webhook 等)。这篇文章用 Zenavo 的 Uptime Kuma 模板,从部署走到收到第一条真实告警。
部署在哪里更合适
开始之前,先想好把 Uptime Kuma 装在哪台服务器上:
- 和业务在同一台服务器:适合刚起步。某个容器挂了、证书快过期了,它都能正常发通知;但如果整台服务器断网或欠费停机,监控自己也会一起失联。
- 放在另一台独立的小服务器上:适合正式业务。Uptime Kuma 占用资源很小,和业务分开部署才能在业务服务器彻底宕机时发出提醒。
从模板部署
先在 Zenavo 中连接一台 Linux 服务器,再打开 Uptime Kuma 模板,选择服务器并部署。
当前模板的配置如下:
| 配置 | 值或用途 |
|---|---|
| 镜像 | louislam/uptime-kuma:1 |
| HTTP 端口 | 3001 |
| 持久化目录 | /app/data,SQLite 数据库、监控项、历史记录和通知凭据都在这里 |
在 uptime-kuma 服务的 网络 页为 3001 端口绑定域名,例如 status.example.com,在 DNS 添加指向服务器的 A 记录,等待 HTTPS 生效。步骤见域名文档。
域名生效后立即打开网站创建管理员账号。 第一次打开页面的人可以直接设置管理员用户名和密码,请尽快自己完成这一步。
添加第一条监控
登录后点击左上角 添加监控项(Add New Monitor)。常见配置建议:
| 设置项 | 建议 |
|---|---|
| 监控类型 | 普通网页或 API 选 HTTP(s);检查返回内容里是否包含特定文字选 HTTP(s) - 关键字 |
| 名称 | 写清环境和用途,例如 正式站 - 首页 或 API - /healthz |
| URL | 用户实际访问的完整 https:// 地址 |
| 心跳间隔 | 60 秒 |
| 重试次数 | 设为 2 或 3 次,避免网络偶发抖动一下就半夜把你叫醒 |
| 证书到期通知 | 开启,提前 7–14 天提醒续期异常 |
如果你的应用依赖数据库,除了监控静态首页,建议再加一条专门检查 /healthz 等健康接口的监控,确认后端和数据库连接也正常。
配置通知,并做一次真实演练
在右上角头像菜单打开 设置 → 通知(Notifications),或者直接在编辑监控项时点击 设置通知:
- 选择你常用的渠道(例如 Telegram、Webhook、SMTP 邮件),填入对应的 Token 或账号信息。
- 点击 测试(Test),确认手机或邮箱收到一条测试消息。
- 打开 默认开启(Default enabled),或者在具体监控项里勾选这个通知渠道,然后保存监控项(很多人点了测试收到消息,却忘了把它勾到监控项上并保存)。
为了确认真正出故障时能收到提醒,用一个测试服务演练一次:
- 为一个不对外承接流量的测试服务添加监控,等待状态变成绿色的 Up。
- 在 Zenavo 里暂停这个测试服务,等待 1–3 分钟(取决于你设的间隔和重试次数),确认监控变成红色的 Down,且手机收到故障通知。
- 重新启动测试服务,确认收到恢复(Up)通知。
公开状态页(可选)
如果你想做一个像 status.example.com/status/main 这样给用户看的状态页,点顶部栏的 状态页面(Status Pages) 新建一个,挑出适合公开的服务放进去。内部管理后台、数据库端口和不希望暴露的服务名不要放上公开状态页。
备份与升级
监控项、通知密钥和可用率历史都在 /app/data 数据卷里。在 uptime-kuma 服务的 备份与恢复 中可以备份这个数据卷:
- 停止项目(数据卷备份要求项目处于停止状态)。
- 创建备份,完成后重新启动项目。
- 下载一份备份妥善保存(里面包含你的通知 Webhook / Bot Token)。详见备份与恢复。
模板使用的是 louislam/uptime-kuma:1(固定在 v1 大版本)。如果要升级到后续大版本,一定先读 Uptime Kuma 的发行说明并先备份 /app/data;跨大版本迁移数据库后,直接把镜像改回旧版本通常无法回退,需要恢复升级前的备份。
常见问题
点了“测试通知”能收到,服务挂了却没收到提醒? 打开该监控项的编辑页,看右侧 通知 列表里有没有把刚才配好的通知渠道勾上,勾上后点底部的 保存。
需要挂载宿主机的 Docker Socket 吗?
不需要。通过 HTTP(s) 和 TCP 端口就能检查绝大部分服务,不挂载 docker.sock 更安全。监控同一个 Zenavo 项目里的其他服务时,也可以填私有网络地址(如 http://api.zenavo.internal:3000/healthz)。
经常收到误报怎么办? 把监控项里的 重试次数(Retries) 从 0 调到 2–3 次,并把超时时间适当放宽,过滤掉单次网络抖动。
从 Uptime Kuma 模板开始:绑定域名、创建管理员,配好通知并用测试服务演练一次停机与恢复,你的监控才算真正就位。
这是 coding agent 读到的内容,地址是 https://zenavo.app/zh-CN/blog/uptime-kuma-monitoring.md。
无法加载 Markdown,请直接打开: https://zenavo.app/zh-CN/blog/uptime-kuma-monitoring.md