Uptime Kuma 自建监控:HTTP/SSL 探测与告警渠道怎么配(2026)
摘要:相对云厂商拨测与 UptimeRobot,本文按 Uptime Kuma 官方 README / Wiki,整理 Docker 部署、HTTP(S) 与证书到期通知、以及 Telegram/邮件等告警渠道怎么配。查询日期 2026-10-20;只放官网普通链接(affiliate_later)。
依据:Uptime Kuma GitHub README、Wiki · How to Install、Wiki · Notification Methods、仓库内 notification 组件列表。查询日期:2026-10-20(北京时间)。本文只放开源项目与文档普通链接(
affiliate_later);不写云厂商单价;自建监控本身也会占用服务器资源与运维精力,请按你的站点重要程度选择。
本站已有网站可用性监控怎么设(阿里云云监控 / 腾讯云云拨测 / UptimeRobot 视角)。那篇讲的是托管拨测;本文换成 Uptime Kuma 自建:数据在你自己的机器上、探测间隔可到约 20 秒、告警渠道可接到 Telegram / Discord / SMTP / Webhook 等。适合已经有一台轻量服务器、想少依赖第三方套餐配额的站长。证书续期流程仍见免费 HTTPS 证书自动续期;本文只补「探测 + 到期提醒 + 告警怎么接到人」。
一、Uptime Kuma 能监控什么
官方 README 列出的监控类型包括:HTTP(s)、TCP、HTTP(s) Keyword、HTTP(s) JSON Query、Websocket、Ping、DNS、Push、Steam 游戏服、Docker 容器等;并写明支持证书信息(Certificate info)、状态页、代理、2FA,以及 Telegram / Discord / Gotify / Slack / Pushover / Email(SMTP)等 90+ 通知渠道。

和云拨测的差异可以先记三句:
| 维度 | 托管拨测(云厂商 / UptimeRobot) | Uptime Kuma 自建 |
|---|---|---|
| 探测点 | 厂商多地域节点 | 默认从你的服务器所在网络发出(除非你另配分布式) |
| 数据与费用 | 受套餐间隔/监视器数量限制 | 开源自托管,成本主要是机器与流量 |
| 证书提醒 | 看套餐是否含 SSL 检查 | HTTP(S) 监视器可开证书相关能力;到期提醒阈值以当前版本界面为准 |
自建的盲点也要说清:若监控机和站点在同一机房同网段,机房整体断网时你可能收不到「外网视角」的宕机告警。重要站点仍建议保留一套站外拨测(见上一篇),或把 Kuma 部署在另一台、另一云厂商的机器上。
二、怎么装:官方推荐 Docker / Compose
Wiki《How to Install》与 README 都以 Docker 为主路径。查询日 README 示例(版本标签以仓库当前说明为准,常见为 louislam/uptime-kuma:2):
docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:2
Compose 路径:新建目录 → 拉取官方 compose.yaml → docker compose up -d。默认监听 3001(如 http://localhost:3001 或 http://你的IP:3001)。若只想本机访问,可把端口映射写成 127.0.0.1:3001:3001,再经 Nginx 反代与 HTTPS 对外(反代注意见Nginx 反向代理多站点)。

官方警告:不要把数据目录映射到 NFS 一类网络文件系统(易导致 SQLite 损坏)。数据卷用本地磁盘或 Docker volume。面板不要裸奔公网:至少设强管理员密码、开 2FA,安全组只放行必要端口;用宝塔时也要把面板与 Kuma 端口权限收紧,见宝塔面板优缺点与安全。
首次打开浏览器会引导创建管理员账号。装好后先加一个指向你自己站点首页的 HTTP(S) 监视器做冒烟测试。
三、HTTP(S) 探测:间隔、关键字与状态码
在面板里 Add New Monitor:
- Type 选 HTTP(s)(只测连通)或 HTTP(s) - Keyword / JSON Query(还要内容对)。
- URL 写完整
https://…;测健康检查接口时用固定返回的路径,避免首页因 A/B 或缓存偶发关键字变化误报。 - Heartbeat Interval:官方宣传可到约 20 秒;个人站 60 秒通常够用,过密会增加目标站与自身出口流量。
- Retries / Retry Interval:偶发抖动时先重试再标 DOWN,减少「扫一眼就炸群」的告警疲劳。
- Accepted Status Codes:默认接受 2xx/3xx 一类成功码;若你的探活接口固定返回 200,就不要把 404 维护页当成成功。
- 需要登录态的后台页:优先单独做匿名
/healthz,不要把 Cookie 明文塞进监视器长期存放。
Keyword / JSON Query 适合抓「首页被劫持成停车场」「接口字段丢了但状态码仍是 200」这类问题——这正是纯状态码拨测容易漏掉的一层。
四、SSL / 证书:别只靠「以为 Certbot 会续」
README 明确把 Certificate info 列为特性。实践上建议:
- 监视器 URL 必须用
https://,并不要随便勾选「忽略 TLS 错误」(除非你在测刻意自签的内网服务)。 - 在 HTTP(S) 监视器编辑页开启与证书到期相关的通知选项(社区与 Issues 中常称为 Certificate Expiry Notification;具体开关文案以你安装的版本界面为准)。
- 在 Settings → Notifications 一类全局设置里配置「提前多少天提醒」(常见会配多个天数阈值,例如 30 / 14 / 7——以当前版本可填项为准)。
- 续期脚本与探测拆开:免费证书自动续期负责「续上」;Kuma 负责「快过期/链不完整时喊人」。Cloudflare 代理场景还要核对源站与边缘证书模式,见Cloudflare CDN 与 SSL。
证书提醒的目标不是替代自动续期,而是在续期任务静默失败时给你缓冲时间。
五、告警渠道:先通一条,再加冗余
Wiki《Notification Methods》说明:原生支持多种通知提供方,完整列表见仓库 src/components/notifications;另外还可通过 Apprise 扩展更多渠道。

建议落地顺序:
- 先配一条你一定看得到的通道(个人常用 Telegram Bot 或 SMTP 到常用邮箱),在通知设置里点「Test」。
- 监视器里勾选要用的通知;区分「DOWN / UP 恢复」是否都要推,避免恢复风暴。
- 第二条通道做冗余(例如 Discord Webhook 或 Gotify),防止 Bot Token 失效时全哑火。
- 告警文案里带上监视器名、URL、状态——半夜只看到「DOWN」却不知道哪个站,等于白配。
- 不要把 Webhook URL、Bot Token 提交进公开 Git 仓库;轮换凭证后记得在 Kuma 里同步更新。
六、上线前 10 项核对清单
- □ 数据卷在本地盘,不是 NFS。
- □ 3001(或反代后的域名)仅必要 IP 可访问;已设管理员密码 + 2FA。
- □ 至少 1 个 HTTP(S) 监视器指向生产首页或
/healthz。 - □ 关键字/JSON 监视器的关键字来自稳定片段,不是营销文案。
- □ 证书到期通知已开,并测过「测试通知」。
- □ 告警通道 Test 成功;换手机/换群后重新测。
- □ 故意停掉测试站点或改 hosts,确认能收到 DOWN,再恢复看 UP。
- □ 重要站另有站外拨测或异地 Kuma(避免同机房共死)。
- □ 备份:把 Kuma 数据卷纳入整站/对象存储备份或至少定期
docker volume快照。 - □ 文档版本会变:升级前先看 Wiki《How to Update》,大版本(如 v1→v2)单独读迁移说明。
七、相关阅读
- 网站可用性监控怎么设(云厂商 / UptimeRobot)
- 免费 HTTPS 证书怎么申请和自动续期
- Nginx 反向代理多站点:证书与 502
- 宝塔面板要不要装:优缺点与安全
- Cloudflare CDN 与 SSL
- 用对象存储做整站备份
风险提示:自建监控不是 SLA 承诺;探测成功不等于业务正确。公开暴露未加固的监控面板可能成为入侵入口。本文不构成任何可用性或安全保证。