操作手册 · 监控与可观测

待环境验证

Uptime Kuma 可用性探测与通知验收

从探测点网络、健康检查规则、通知演练和 data 目录备份出发,验收 Uptime Kuma 是否真能发现故障并安全展示状态页。

Docker告警治理监控告警
阅读导引 · 理解后再操作

这篇知识解决什么问题

本篇要确认探测点看见的结果能否代表约定对象:地址对不对、规则查的是什么、通知有没有送到指定的人,以及状态页有没有泄露内部信息。阅读时把“页面能打开”和“故障可被发现并通知”分开。

探测点网络决定你能看见什么

Uptime Kuma 从实例所在网络发起检测。容器里的 localhost、未开通的出站路径、只绑定本机的服务,都会让探测结果与浏览器访问不一致。先固定探测点位置,再解释可用率。

规则满足不等于业务正确

状态码、关键词、JSON 字段和 Push 心跳各自只证明一件事。HTTP 200 不能代替交易成功,容器 Running 不能代替应用可服务。没有写进规则的条件,不能事后当成已经监控到。

进入文章正文
关联架构图解7 个组件 · 点击展开

借用站点可用性探测参考图,理解主动探测、本地 data 目录、反向代理、状态页和通知接收是不同职责。本图不是真实部署,也不覆盖主机指标或日志。

查看场景架构与实施步骤
参考架构 · 非实时拓扑

探测点、通知与状态页的逻辑架构

由独立探测点主动检查业务入口,把心跳写入本地数据目录,再经反向代理发布状态页,并把故障与恢复送到指定接收端。

  • 数据 / 请求
  • 控制 / 管理
  • 观测 / 查询

点击组件,在图下方查看职责;连线编号对应流向解读。小屏可横向滚动,或直接展开文字说明。

探测点、通知与状态页的逻辑架构:组件关系图由独立探测点主动检查业务入口,把心跳写入本地数据目录,再经反向代理发布状态页,并把故障与恢复送到指定接收端。 Uptime Kuma → 探测对象:主动探测;Uptime Kuma → data 目录:写入心跳;反向代理 → Uptime Kuma:转发 WebSocket;状态页 → Uptime Kuma:读取公开状态;Uptime Kuma → 通知渠道:故障与恢复事件;通知渠道 → 测试接收人:送达确认。箭头说明见下方流向解读。
逻辑参考图,表示建议的探测与通知职责,不是本站或目标环境的真实部署;探测成功不等于全部用户可用。

探测对象

服务组件

业务健康检查接口、公开站点、TCP 端口或 Push 心跳。容器内 localhost 指向探测容器自身,目标必须写成该实例实际可达的地址。

全部组件职责 7 个组件
探测对象
业务健康检查接口、公开站点、TCP 端口或 Push 心跳。容器内 localhost 指向探测容器自身,目标必须写成该实例实际可达的地址。
Uptime Kuma
按监控项间隔、超时和重试从本实例网络发起检测,保存状态并触发通知。一个探测点不能代表所有故障域。工具介绍 Uptime Kuma
反向代理
将独立域名转到本机 3001 端口,并转发 Upgrade、Connection。官方不支持把完整应用放在子路径。管理端口不要直接对公网开放。
data 目录
默认保存数据库和上传文件。必须使用本地磁盘;NFS 不受支持。2.x 以复制该目录为备份方式,不再使用 JSON 导出。
状态页
只展示适合公开的服务名称与分组。发布前需用未登录视角检查,避免出现内部地址、令牌或管理入口。
通知渠道
可使用邮件、Telegram、钉钉、飞书、企业微信等。先向测试接收端验证,再绑定正式值班通道;维护窗口避免把计划发布当成故障。
测试接收人
确认故障和恢复消息实际送达,并核对应答时限。通知日志成功不等于接收人看到消息。
流向解读 6 条连接
  1. 1

    Uptime Kuma 探测对象

    观测 / 查询 · 主动探测

    由探测点发起 HTTP、TCP、Ping 或等待 Push 心跳,结果只说明该规则是否满足。

  2. 2

    Uptime Kuma data 目录

    数据 / 请求 · 写入心跳

    把检测历史和配置写入本地数据目录,备份前应停止实例以保持 SQLite 一致。

  3. 3

    反向代理 Uptime Kuma

    控制 / 管理 · 转发 WebSocket

    浏览器经代理访问管理界面和状态页;缺少 Upgrade 头时常见表现是无法登录或状态不刷新。

  4. 4

    状态页 Uptime Kuma

    观测 / 查询 · 读取公开状态

    状态页从同一实例读取选定监控项,不构成第二条探测链路。

  5. 5

    Uptime Kuma 通知渠道

    观测 / 查询 · 故障与恢复事件

    状态变化后按绑定渠道发送。模板在 2.x 使用 LiquidJS,变量区分大小写。

  6. 6

    通知渠道 测试接收人

    观测 / 查询 · 送达确认

    由指定接收人确认失败和恢复消息,而不是只看应用日志。

故障域与操作边界

探测成功不等于用户可用

单个探测点只反映它所在网络的可达性。证书、关键词和业务逻辑需要单独规则;主机指标和日志不在本图范围内。

Docker socket 等于宿主机控制权

容器监控需要挂载 docker.sock。该实例若对公网开放,攻击者可能控制 Docker。没有该需求就不要挂载。

架构依据与版本核对 2 篇官方资料

图解是本站基于官方资料整理的逻辑参考;实施前仍需核对实际部署版本、组件支持范围与变更审批。

适用范围与前提

本文配套 站点可用性探测,用于自托管 Uptime Kuma 的探测对象、通知和状态页验收。开始前登记探测点所在网络、目标清单、通知测试接收人和数据目录;本文未在你的目标环境执行,验证状态为待验证。

Uptime Kuma 从部署实例所在网络发起检测。一次 HTTP 成功只说明该探测规则被满足,不能证明全部业务链路或全部用户入口可用。容器处于运行状态也不等于应用可服务。需要主机指标、日志或复杂告警路由时,应另外使用 PrometheusGrafanaAlertmanager

先固定探测点与对象清单

为每个监控项写清:探测点位置、目标地址、期望状态码或关键词、间隔、超时、重试,以及失败后谁在多长时间内做什么。容器内的 localhost 指向容器自身,目标必须写成探测实例实际可达的地址。

优先选择业务自己的健康检查接口,而不是只探测首页或登录页。公开状态页只放入适合对外展示的名称和服务,不要放内部主机名、管理地址或令牌。

部署后核对实例与数据目录

2.x 的 Docker 数据默认挂载到 /app/data。官方不支持把该目录放到 NFS 等网络文件系统。首次启动后应能在绑定地址打开安装向导并创建管理员;生产入口不要把 3001 直接暴露到公网。

docker compose ps
docker compose logs --tail=100 uptime-kuma

上述命令只读取当前 Compose 项目状态和最近日志,不修改监控配置。正式部署应记录经过验证的镜像版本或摘要,而不是长期跟随浮动的 :2 标签。

验收探测规则而不是“页面能打开”

HTTP(S) 监控至少核对状态码、超时和证书;仅状态码不够时再加关键词或 JSON 查询。Push 监控把心跳令牌当作秘密保管,轮换后更新所有调用方。Docker 容器监控需要把宿主机 docker.sock 挂进容器,这会把 Docker 控制权交给该实例,公网暴露时不要启用。

经授权后只在测试对象上制造一次失败与恢复,记录:状态变化时间、通知送达时间、恢复通知是否出现。不要用生产核心服务做故障注入。

通知渠道、维护窗口与降噪

通知可使用 SMTP、Telegram、Slack、Discord,以及钉钉、飞书、企业微信、Server 酱等渠道;完整列表以当前版本界面为准。先在测试接收端验证,再绑定正式值班通道。维护窗口应写明范围、负责人和结束时间,避免计划内发布被当成故障。

重复通知、探测点自身网络抖动和证书临期要分开处理。通用分级方法可参考 Prometheus 告警分级与降噪实践,该文不表示 Uptime Kuma 使用 Alertmanager。

反向代理、状态页与指标出口

对外访问使用独立域名或子域名,反向代理必须转发 WebSocket 的 UpgradeConnection。官方不支持把完整管理界面放在 /uptimekuma 这类子路径。若实例只通过代理访问,在设置中开启 Trust Proxy,以便日志记录真实客户端地址。

/metrics 使用首个管理员账号的 HTTP Basic Auth,供已有 Prometheus 抓取;开启后限制来源,不要把该接口公开到未授权网络。

备份、升级与回退

2.x 已移除 JSON 备份/恢复,支持的做法是停止实例后复制完整 data 目录;若改用 MariaDB 等外部库,须把该库一并纳入备份。升级前记录镜像版本和挂载路径,在隔离目录验证备份可启动。

docker compose pull
docker compose up -d --force-recreate

同一主版本可按官方说明重建容器并保留数据卷。v1 升 v2 会迁移心跳数据,耗时随历史记录增长,期间不要中断进程;失败后用升级前备份和对应旧版本在隔离目录恢复,不要让旧程序直接读取已迁移数据。

出现通知未送达、状态页泄露内部信息、WebSocket 无法登录或探测点只能看到自身网络时,停止扩大监控范围,先恢复已知可用的入口和备份。

参考资料

从现象到判断

先收集证据,再缩小范围。以下是判读路径,不代表已经确认根因或获准变更。

  1. 管理页面能打开,但无法登录或状态不刷新;直连本机端口却正常。

    只读核对
    核对反向代理是否转发 Upgrade 与 Connection,以及 Trust Proxy 是否仅在实例只经代理访问时开启。
    如何判读
    Uptime Kuma 依赖 WebSocket。缺少升级头时常见表现是界面卡住,而不是监控规则本身失败。
  2. 浏览器能打开目标,探测却失败;或探测成功但业务实际不可用。

    只读核对
    对照监控项里的 URL、期望状态码或关键词、超时,以及探测容器是否把目标写成了 localhost。
    如何判读
    应区分探测路径错误和业务规则过宽。扩大关键词或改成只检查首页之前,先确认健康检查接口的真实含义。
  3. 看板显示故障,值班群没有消息,或计划发布被当成故障。

    只读核对
    向测试接收端补发通知,核对渠道绑定、维护窗口范围和结束时间,并由接收人确认失败与恢复各一条。
    如何判读
    应用日志中的发送成功不等于送达。未做接收人确认前,不要把通知通道视为已验收。
常见误区与判断边界 2 项

把 docker.sock 挂进对公网开放的实例

Docker 容器监控需要宿主机套接字,等于把 Docker 控制权交给该容器。没有该需求就不要挂载;必须使用时限制管理入口,并记录风险。

用 JSON 导出当作 2.x 备份

2.x 已移除 JSON 备份/恢复。受支持的做法是停止实例后复制 data 目录,并在隔离路径验证可启动。浮动镜像标签 :2 不能代替记录过的摘要。

交接时应留下的证据

作为记录提纲使用,不是自动检查结果;未取得的证据应标记缺口,并注明负责人。

  • 登记探测主机、目标健康检查 URL、期望规则、间隔超时和公开状态页范围。
  • 保存本机绑定启动记录、镜像摘要和 data 目录路径,确认不是 NFS。
  • 保留测试故障与恢复的时间线,以及指定接收人对通知的确认。
  • 交接未登录状态页检查结果、反向代理 WebSocket 验证、备份位置和回退镜像。

记录需包含环境、版本、时间与时区;分享前脱敏,不附访问令牌、密码或完整业务敏感数据。

继续阅读与资料核对

补充相关主题,再结合当前环境的实施记录形成结论。

返回原理导读

DOUYA OPS ECOSYSTEM

贡献你的经验,帮助更多运维人

把故障复盘、标准流程和最佳实践沉淀为可检索、可复用的知识内容。