---
title: "用 Uptime Kuma 监控网站：从部署到收到第一条故障提醒"
description: "在 Zenavo 上用模板部署 Uptime Kuma，添加网站与接口监控，配置 Telegram 或邮件通知，验证故障与恢复提醒，并做好数据卷备份。"
date: 2026-11-10
language: zh-CN
url: https://zenavo.app/zh-CN/blog/uptime-kuma-monitoring
---

# 用 Uptime Kuma 监控网站：从部署到收到第一条故障提醒

网站或服务上线后，与其等用户来告诉你“打不开了”，不如让监控在证书过期或服务宕机的第一时间发消息提醒你。

[Uptime Kuma](https://github.com/louislam/uptime-kuma) 是一个轻量、开源的自托管监控工具：支持 HTTP(s)、关键字、TCP 端口、DNS、证书到期等多种检查方式，自带状态页和几十种通知渠道（Telegram、飞书、企业微信、Slack、邮件、Webhook 等）。这篇文章用 Zenavo 的 Uptime Kuma 模板，从部署走到收到第一条真实告警。

## 部署在哪里更合适

开始之前，先想好把 Uptime Kuma 装在哪台服务器上：

- **和业务在同一台服务器**：适合刚起步。某个容器挂了、证书快过期了，它都能正常发通知；但如果整台服务器断网或欠费停机，监控自己也会一起失联。
- **放在另一台独立的小服务器上**：适合正式业务。Uptime Kuma 占用资源很小，和业务分开部署才能在业务服务器彻底宕机时发出提醒。

## 从模板部署

先在 Zenavo 中[连接一台 Linux 服务器](https://docs.zenavo.app/zh-CN/servers/add-a-server)，再打开 [Uptime Kuma 模板](https://zenavo.app/deploy?template=uptime-kuma)，选择服务器并部署。

当前模板的配置如下：

| 配置 | 值或用途 |
|---|---|
| 镜像 | `louislam/uptime-kuma:1` |
| HTTP 端口 | `3001` |
| 持久化目录 | `/app/data`，SQLite 数据库、监控项、历史记录和通知凭据都在这里 |

在 uptime-kuma 服务的 **网络** 页为 `3001` 端口绑定域名，例如 `status.example.com`，在 DNS 添加指向服务器的 A 记录，等待 HTTPS 生效。步骤见[域名文档](https://docs.zenavo.app/zh-CN/networking/domains)。

**域名生效后立即打开网站创建管理员账号。** 第一次打开页面的人可以直接设置管理员用户名和密码，请尽快自己完成这一步。

## 添加第一条监控

登录后点击左上角 **添加监控项（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）。详见[备份与恢复](https://docs.zenavo.app/zh-CN/operations/backups)。

模板使用的是 `louislam/uptime-kuma:1`（固定在 v1 大版本）。如果要升级到后续大版本，一定先读 Uptime Kuma 的[发行说明](https://github.com/louislam/uptime-kuma/releases)并先备份 `/app/data`；跨大版本迁移数据库后，直接把镜像改回旧版本通常无法回退，需要恢复升级前的备份。

## 常见问题

**点了“测试通知”能收到，服务挂了却没收到提醒？**
打开该监控项的编辑页，看右侧 **通知** 列表里有没有把刚才配好的通知渠道勾上，勾上后点底部的 **保存**。

**需要挂载宿主机的 Docker Socket 吗？**
不需要。通过 HTTP(s) 和 TCP 端口就能检查绝大部分服务，不挂载 `docker.sock` 更安全。监控同一个 Zenavo 项目里的其他服务时，也可以填私有网络地址（如 `http://api.zenavo.internal:3000/healthz`）。

**经常收到误报怎么办？**
把监控项里的 **重试次数（Retries）** 从 0 调到 2–3 次，并把超时时间适当放宽，过滤掉单次网络抖动。

从 [Uptime Kuma 模板](https://zenavo.app/deploy?template=uptime-kuma)开始：绑定域名、创建管理员，配好通知并用测试服务演练一次停机与恢复，你的监控才算真正就位。
