DevOps

Uptime Kuma:独立开发者先把“服务还活着吗”监控起来

独立开发者和小团队最怕的不是服务故障,而是故障已经发生很久,自己还不知道。一个博客、一个 API、一个临时工具、一个客户演示环境,看起来都不大,但只要对外提供服务,就需要最基本的可用性监控。

Uptime Kuma 适合做这件事。它不复杂,不需要先搭一整套指标平台,也不要求团队懂 Prometheus 查询语言。它的核心目标很直接:网站是否还能访问,端口是否还通,证书是否快过期,定时任务是否还在按时上报。

它适合监控什么

把 Uptime Kuma 用好,第一步是不要贪多。个人站点可以先加主域名、后台入口、API health endpoint、数据库端口、对象存储回源地址和一个备份任务 Push 心跳。小型 SaaS 可以再加登录、支付回调、文档站、控制台和关键客户入口。

这些检查不需要解释所有问题,但能把问题暴露出来。页面返回 500、证书过期、DNS 解析异常、容器挂掉、cron 没有按时结束,这些都应该第一时间进入告警渠道。

部署时先保护面板

services:
  uptime-kuma:
    image: louislam/uptime-kuma:2
    restart: unless-stopped
    ports:
      - "127.0.0.1:3001:3001"
    volumes:
      - ./kuma-data:/app/data

更推荐把端口绑定在本机回环地址,然后用 Caddy、Nginx 或 Cloudflare Tunnel 暴露到外部。监控面板里会保存服务列表、通知 Webhook、内部地址和团队值班规则,不应该直接裸露在公网。

SQLite 不是错,没备份才是错

很多人一看到 2.0 支持 PostgreSQL、MySQL、MariaDB,就想立刻迁移。其实小规模使用 SQLite 很正常,真正不能接受的是没有备份、把数据目录放到不兼容文件锁的 NFS/NAS、或者升级前不保留快照。

如果你的监控项不多,先做好本地卷、定期备份和升级前快照,比盲目上数据库更实际。只有当监控项上百、历史数据增长明显、准备进 Kubernetes 或希望统一数据库运维时,外部数据库才更有价值。

告警要能行动

一条好告警至少要回答四件事:哪个服务、什么现象、什么时候开始、现在是否恢复。飞书、钉钉、企业微信、Telegram 都只是通道,真正决定效率的是告警内容和分级策略。

建议把监控分为三档:核心业务入口高频检查并立即通知;低风险后台服务延迟通知;第三方依赖只做趋势观察,不要因为一次瞬断就把人叫醒。监控系统如果天天误报,团队很快就会对它失去信任。

结论

Uptime Kuma 不是运维银弹,但它很适合作为独立开发者和小团队的第一套自托管可用性监控。先用它把站点、API、证书、端口和定时任务看住,再逐步补日志、指标和链路追踪。先知道服务坏了,再去追问为什么坏,这个顺序不能反。