摘要:对于中小团队、独立开发者或个人站长来说,部署一套 Zabbix 或 Prometheus+Grafana 往往显得“杀鸡用牛刀”。今天为大家介绍一款 GitHub 霸榜的开源监控工具 Uptime Kuma。它颜值极高、支持 Docker 一键部署、自带状态页,并且支持包括飞书、钉钉、Telegram 在内的 90+ 种通知方式。


🚀 为什么选择 Uptime Kuma?

在传统的运维监控领域,我们通常面临两个极端:

  • Zabbix:功能强大但配置繁琐,UI 停留在上个世纪。

  • Prometheus:云原生标配,但学习曲线陡峭,且本身不带可视化面板。

Uptime Kuma 的出现填补了“轻量级、高颜值、开箱即用”的空白。

核心特性

  • 监控类型丰富:支持 HTTP(s)、TCP、Ping、DNS Record、Docker 容器等。

  • UI 现代化:响应式设计,黑暗模式,看起来非常舒服。

  • 通知渠道强:内置支持企业微信、飞书、钉钉、Email、TG 等国内常用渠道。

  • 状态页(Status Page):不仅监控,还能自动生成类似 GitHub Status 的对外服务状态页。


🛠️ 环境准备与 Docker 部署

我们将使用最推荐的 Docker Compose 方式进行部署,方便数据持久化和迁移。

2.1 准备 Docker 环境

确保你的服务器(Linux/macOS/Windows)已经安装了 Docker 和 Docker Compose。

Bash

docker --version
docker-compose --version

2.2 编写 docker-compose.yml

创建一个部署目录 uptime-kuma,并在其中新建 docker-compose.yml 文件:

YAML

version: '3.3'

services:
  uptime-kuma:
    image: louislam/uptime-kuma:1
    container_name: uptime-kuma
    restart: always
    # 映射端口:左边是宿主机端口,可以根据需要修改
    ports:
      - "3001:3001"
    # 数据持久化:非常重要!防止重启容器后数据丢失
    volumes:
      - ./uptime-kuma-data:/app/data
      # 如果你需要监控宿主机的 Docker 容器状态,需要挂载 docker.sock
      - /var/run/docker.sock:/var/run/docker.sock
    
    # 资源限制(可选,生产环境建议加上)
    deploy:
      resources:
        limits:
          cpus: '0.5'
          memory: 512M

2.3 启动服务

在终端运行以下命令:

Bash

docker-compose up -d

启动成功后,访问 http://你的服务器IP:3001,首次访问会要求你创建一个管理员账号。


💻 实战配置指南

3.1 场景一:监控 Web 服务与 SSL 证书过期

这是最常用的场景。我们不仅要监控网站是否 200 OK,还要防止 SSL 证书过期导致的事故。

  1. 点击左上角 “+ 添加监控项”

  2. 监控类型选择 HTTP(s)

  3. URL 填入你的网址(例如 https://www.baidu.com)。

  4. 高级设置中:

    • 勾选 “证书过期提醒”

    • 设置剩余天数(例如 7 天),这样证书快过期时你会收到报警。

    • 心跳间隔:建议设置为 60 秒。

3.2 场景二:监控 TCP 端口(Redis/MySQL)

有时候 Web 服务是好的,但数据库挂了。我们可以通过 TCP 端口探测来监控中间件。

  1. 监控类型选择 TCP Port

  2. Hostname 填入数据库服务器 IP。

  3. Port 填入 3306 (MySQL) 或 6379 (Redis)。

3.3 场景三:配置飞书/钉钉报警机器人

这是 Uptime Kuma 最强大的地方,配置非常简单。

以**飞书(Lark)**为例:

  1. 在飞书群组中添加一个“自定义机器人”,获取 Webhook 地址

  2. 在 Uptime Kuma 点击右上角头像 -> 设置 -> 通知 -> 设置通知

  3. 通知类型选择 Feishu

  4. 粘贴 Webhook URL。

  5. 点击“测试”,你的飞书群就会收到一条测试消息。


📊 进阶玩法:对外展示状态页 (Status Page)

作为一个技术团队,当服务出现波动时,与其让用户猜,不如主动展示服务状态。Uptime Kuma 允许你创建一个公开的 Status Page。

  1. 点击顶部导航栏的 “状态页”

  2. 点击 “新的状态页”

  3. 填写名称(如 "My System Status")和路径(如 /status)。

  4. 将你刚才配置的监控项(Web、API、DB)拖入到该状态页的分组中。

  5. 你可以绑定自定义域名(需要反向代理配合),这样用户访问 status.yourdomain.com 就能看到类似 GitHub 的高大上状态面板了。


🚨 生产环境建议 (反向代理)

虽然 Uptime Kuma 运行在 3001 端口,但生产环境建议使用 Nginx 做反向代理,并配置 SSL。

Nginx 配置示例:

Nginx

server {
  listen 443 ssl http2;
  server_name monitor.yourdomain.com;
  
  # SSL 配置省略...

  location / {
    proxy_pass http://127.0.0.1:3001;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade"; # 必须配置,因为用到了 WebSocket
    proxy_set_header Host $host;
  }
}

注意:Uptime Kuma 强依赖 WebSocket 实时更新状态,所以在 Nginx 配置中必须包含 UpgradeConnection 头。


🔮 总结

Uptime Kuma 是我目前用过体验最好的轻量级监控工具。它没有复杂的 Agent 安装,没有晦涩的 PromQL 语法,简直是 “小而美” 软件的典范。

如果你的需求是:低成本、快速部署、界面好看、基础监控,那么请毫不犹豫地卸载 Zabbix,拥抱 Uptime Kuma 吧。


参考资料

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐