你是否有过这样的经历:线上服务挂了半小时,直到用户反馈才知道?或者为了监控几个接口,每月支付高昂的订阅费?今天介绍一款开源神器 Uptime Kuma——功能媲美付费产品,完全免费,数据掌握在自己手中。


一、什么是 Uptime Kuma?

Uptime Kuma 是一个由社区维护的自托管服务监控工具,GitHub Star 已超过 85k。它提供精美的 Web 界面,能实时监控网站、API、数据库等各类服务的可用性,并在故障时第一时间推送告警通知。

支持的监控类型:

监控类型

适用场景

关键参数

HTTP(s)

网站 / API 接口

状态码、关键词匹配、响应时间

TCP Port

数据库、缓存服务

主机 + 端口连通性

Ping

服务器网络

RTT 延迟、丢包率

HTTP(s) - 关键字

网站内容检测

页面源码中是否包含预设关键词

HTTP(s) - JSON 查询

API 数据验证

返回JSON是否符合预期结构

gRPC(s) - 关键字

gRPC 服务健康检查

响应内容中包含指定关键字

DNS

域名解析

解析结果正确性、响应时间

Docker 容器

容器健康检查

容器运行状态(running/stopped)

HTTP(s) - Browser Engine (Chrome/Chromium) (Beta)

单页应用(SPA)监控

浏览器渲染后页面加载情况

Push

定时任务心跳

主动上报存活信号

Steam 游戏服务器

游戏服务器

在线人数、延迟

GameDig

非Steam游戏服务器

服务器状态、玩家数量

MQTT

物联网设备通信

连接可达性、消息收发

Kafka Producer

消息队列监控

消息发送是否成功

Microsoft SQL Server

数据库服务

数据库连接状态

PostgreSQL

数据库服务

数据库连接状态

MySQL/MariaDB

数据库服务

数据库连接状态

Redis

数据库服务

数据库连接状态


二、快速部署: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


四、配置告警:以企业微信为例

  1. 在企业微信群中添加群机器人,复制 Webhook URL

  2. 打开 Uptime Kuma → 设置 → 通知 → 添加通知

  3. 选择通知类型为 WeCom(企业微信)

  4. 填入 Webhook URL,点击「测试」,收到测试消息即配置成功

  5. 在每个监控项中启用该通知,设置触发阈值

✅ 最佳实践:同时开启「恢复通知」,当服务恢复正常时也推送消息,方便完整记录故障生命周期。


五、状态页:对外展示服务健康状态

Uptime Kuma 内置**状态页(Status Page)**功能,无需额外费用,支持:

  • 绑定自定义域名,例如 status.yourdomain.com

  • 展示 30 / 60 / 90 天历史可用率

  • 按子系统分组展示

  • 自定义 CSS 实现品牌化风格

⚠️ 注意:如需公网访问状态页,建议将 Uptime Kuma 部署在有公网 IP 的服务器上,并配置 Nginx 反向代理 + Let's Encrypt SSL 证书。


六、与同类产品对比

产品

价格

数据主权

告警渠道

状态页

Uptime Kuma

完全免费

自托管

90+

内置

UptimeRobot

免费 / 付费

第三方

有限

付费才有

Better Uptime

$24+/月

第三方

丰富

内置

Statuspage.io

$29+/月

第三方

丰富

强大


七、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 命令就能跑起来。对于个人开发者、小团队或对数据合规有要求的企业,它是替代付费监控服务的理想选择。

核心优势一句话总结:免费 + 自托管 + 好看 + 好用。