你是否有过这样的经历:线上服务挂了半小时,直到用户反馈才知道?或者为了监控几个接口,每月支付高昂的订阅费?今天介绍一款开源神器 Uptime Kuma——功能媲美付费产品,完全免费,数据掌握在自己手中。
一、什么是 Uptime Kuma?
Uptime Kuma 是一个由社区维护的自托管服务监控工具,GitHub Star 已超过 85k。它提供精美的 Web 界面,能实时监控网站、API、数据库等各类服务的可用性,并在故障时第一时间推送告警通知。
支持的监控类型:
二、快速部署:5 分钟上手
方式一:Docker 一键启动(推荐)
只需一条命令,无需复杂配置:
# 拉取并运行容器
docker run -d \
--restart=always \
-p 3001:3001 \
-v uptime-kuma:/app/data \
--name uptime-kuma \
louislam/uptime-kuma:1
# 启动后访问 Web 界面
# http://localhost:3001
方式二:Docker Compose(生产推荐)
version: '3.8'
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
volumes:
- ./data:/app/data
ports:
- "3001:3001"
restart: unless-stopped
environment:
- TZ=Asia/Shanghai
💡 提示:建议将数据目录映射到宿主机,避免容器重启后数据丢失。生产环境可搭配 Nginx 反代,配置域名和 HTTPS 访问。
方式三:直接用 Node.js 运行
git clone https://github.com/louislam/uptime-kuma.git
cd uptime-kuma
npm run setup
node server/server.js
三、核心功能详解
1. 多种监控协议
Uptime Kuma 覆盖了日常运维中几乎所有场景:HTTP/HTTPS 接口监控、TCP/UDP 端口连通性检测、Ping 延迟监控、SSL 证书到期预警、Docker 容器健康状态,以及 Push 心跳模式(适合定时任务存活上报)。
常规监控类型 这些是最常用的网络服务和应用层监控。
HTTP(s):最基础的网络监控。用于检查一个网站或API接口是否能正常访问(返回状态码 200-399)。
TCP Port:端口监控。用于检查某个IP地址的特定端口(如SSH的22端口、数据库的3306端口)是否开放。
Ping:ICMP协议监控。用于检查服务器是否在线,以及网络延迟情况。
HTTP(s) - 关键字:不仅检查网站是否打开,还会检查网页源代码中是否包含你设定的特定文字(例如检查网页是否包含“登录成功”)。
HTTP(s) - JSON 查询:专门用于API监控。它会请求一个API接口,并检查返回的JSON数据是否符合预期(例如检查 {"status": "ok"})。
gRPC(s) - 关键字:针对 gRPC 服务的健康检查。
DNS:域名解析监控。用于检查域名是否能正确解析到指定的IP地址,或者解析速度是否正常。 Docker 容器:直接监控本地或远程Docker容器的运行状态(是否正在运行)。
HTTP(s) - Browser Engine (Chrome/Chromium) (Beta):浏览器引擎监控。这是一个高级功能,它会启动一个真实的浏览器(无头模式)来加载网页,适合监控需要执行JavaScript才能渲染的单页应用(SPA)或进行复杂的用户交互模拟。
被动监控类型
Push:被动推送模式。与上述主动去“探测”不同,这种模式是被监控的服务器主动向监控系统发送“心跳”信号。常用于监控定时任务(Cron Job)是否按时执行,或者监控没有公网IP的内网服务器。
特殊监控类型
这些针对特定的应用、游戏或数据库协议。
Steam 游戏服务器:专门用于监控Steam平台上的游戏服务器状态。
GameDig:一个通用的游戏服务器查询工具,支持多种非Steam游戏服务器。
MQTT:物联网常用的消息队列协议监控。
Kafka Producer:用于监控 Apache Kafka 消息队列的生产者连接状态。
Microsoft SQL Server:微软SQL数据库连接监控。
PostgreSQL:PostgreSQL数据库连接监控。
MySQL/MariaDB:MySQL或MariaDB数据库连接监控。
Redis:Redis数据库连接监控。
2. 灵活的告警策略
每个监控项均可独立配置:
检测间隔:最短 20 秒,可按需调整
失败阈值:连续失败 N 次后才触发告警,避免偶发抖动误报
恢复通知:服务恢复后同步推送,方便团队感知故障已解决
维护窗口:设置定期维护时间段,期间暂停告警
3. 90+ 通知渠道
国内常用渠道均已原生支持:
钉钉群机器人
企业微信群机器人
飞书群机器人
邮件(SMTP)
Bark(iOS 推送)
PushDeer
WxPusher(微信)
Telegram Bot
Slack / Discord
自定义 Webhook
四、配置告警:以企业微信为例
在企业微信群中添加群机器人,复制 Webhook URL
打开 Uptime Kuma → 设置 → 通知 → 添加通知
选择通知类型为 WeCom(企业微信)
填入 Webhook URL,点击「测试」,收到测试消息即配置成功
在每个监控项中启用该通知,设置触发阈值
✅ 最佳实践:同时开启「恢复通知」,当服务恢复正常时也推送消息,方便完整记录故障生命周期。
五、状态页:对外展示服务健康状态
Uptime Kuma 内置**状态页(Status Page)**功能,无需额外费用,支持:
绑定自定义域名,例如
status.yourdomain.com展示 30 / 60 / 90 天历史可用率
按子系统分组展示
自定义 CSS 实现品牌化风格
⚠️ 注意:如需公网访问状态页,建议将 Uptime Kuma 部署在有公网 IP 的服务器上,并配置 Nginx 反向代理 + Let's Encrypt SSL 证书。
六、与同类产品对比
七、Nginx 反向代理配置参考
如果你希望通过域名访问并启用 HTTPS,参考以下 Nginx 配置:
server {
listen 80;
server_name status.yourdomain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name status.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
location / {
proxy_pass http://localhost:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
总结
Uptime Kuma 是目前自托管监控领域综合表现最优秀的开源方案之一。它不仅功能完整、界面美观,部署门槛也极低——一条 Docker 命令就能跑起来。对于个人开发者、小团队或对数据合规有要求的企业,它是替代付费监控服务的理想选择。
核心优势一句话总结:免费 + 自托管 + 好看 + 好用。