用 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),或者直接在编辑监控项时点击 设置通知:

  1. 选择你常用的渠道(例如 Telegram、Webhook、SMTP 邮件),填入对应的 Token 或账号信息。
  2. 点击 测试(Test),确认手机或邮箱收到一条测试消息。
  3. 打开 默认开启(Default enabled),或者在具体监控项里勾选这个通知渠道,然后保存监控项(很多人点了测试收到消息,却忘了把它勾到监控项上并保存)。

为了确认真正出故障时能收到提醒,用一个测试服务演练一次:

  1. 为一个不对外承接流量的测试服务添加监控,等待状态变成绿色的 Up。
  2. 在 Zenavo 里暂停这个测试服务,等待 1–3 分钟(取决于你设的间隔和重试次数),确认监控变成红色的 Down,且手机收到故障通知。
  3. 重新启动测试服务,确认收到恢复(Up)通知。

公开状态页(可选)

如果你想做一个像 status.example.com/status/main 这样给用户看的状态页,点顶部栏的 状态页面(Status Pages) 新建一个,挑出适合公开的服务放进去。内部管理后台、数据库端口和不希望暴露的服务名不要放上公开状态页。

备份与升级

监控项、通知密钥和可用率历史都在 /app/data 数据卷里。在 uptime-kuma 服务的 备份与恢复 中可以备份这个数据卷:

  1. 停止项目(数据卷备份要求项目处于停止状态)。
  2. 创建备份,完成后重新启动项目。
  3. 下载一份备份妥善保存(里面包含你的通知 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 模板开始:绑定域名、创建管理员,配好通知并用测试服务演练一次停机与恢复,你的监控才算真正就位。