DevOps实战------告别 Zabbix!5分钟部署 GitHub 50k+ 星的监控神器 Uptime Kuma
摘要:UptimeKuma是一款轻量级开源监控工具,专为中小团队和个人开发者设计,解决了传统监控系统配置复杂、资源占用大的痛点。支持Docker一键部署,提供HTTP(s)、TCP、Ping等多种监控类型,内置90+种通知渠道(包括飞书、钉钉等)。其特色包括现代化UI界面、自动生成状态页、SSL证书过期提醒等功能。相比Zabbix和Prometheus,UptimeKuma具有开箱即用、部署简单、
摘要:对于中小团队、独立开发者或个人站长来说,部署一套 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 证书过期导致的事故。
-
点击左上角 “+ 添加监控项”。
-
监控类型选择
HTTP(s)。 -
URL 填入你的网址(例如
https://www.baidu.com)。 -
高级设置中:
-
勾选 “证书过期提醒”。
-
设置剩余天数(例如 7 天),这样证书快过期时你会收到报警。
-
心跳间隔:建议设置为
60秒。
-
3.2 场景二:监控 TCP 端口(Redis/MySQL)
有时候 Web 服务是好的,但数据库挂了。我们可以通过 TCP 端口探测来监控中间件。
-
监控类型选择
TCP Port。 -
Hostname 填入数据库服务器 IP。
-
Port 填入
3306(MySQL) 或6379(Redis)。
3.3 场景三:配置飞书/钉钉报警机器人
这是 Uptime Kuma 最强大的地方,配置非常简单。
以**飞书(Lark)**为例:
-
在飞书群组中添加一个“自定义机器人”,获取
Webhook 地址。 -
在 Uptime Kuma 点击右上角头像 -> 设置 -> 通知 -> 设置通知。
-
通知类型选择
Feishu。 -
粘贴 Webhook URL。
-
点击“测试”,你的飞书群就会收到一条测试消息。
📊 进阶玩法:对外展示状态页 (Status Page)
作为一个技术团队,当服务出现波动时,与其让用户猜,不如主动展示服务状态。Uptime Kuma 允许你创建一个公开的 Status Page。
-
点击顶部导航栏的 “状态页”。
-
点击 “新的状态页”。
-
填写名称(如 "My System Status")和路径(如
/status)。 -
将你刚才配置的监控项(Web、API、DB)拖入到该状态页的分组中。
-
你可以绑定自定义域名(需要反向代理配合),这样用户访问
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 配置中必须包含
Upgrade和Connection头。
🔮 总结
Uptime Kuma 是我目前用过体验最好的轻量级监控工具。它没有复杂的 Agent 安装,没有晦涩的 PromQL 语法,简直是 “小而美” 软件的典范。
如果你的需求是:低成本、快速部署、界面好看、基础监控,那么请毫不犹豫地卸载 Zabbix,拥抱 Uptime Kuma 吧。
参考资料
-
Uptime Kuma GitHub: https://github.com/louislam/uptime-kuma
-
Docker Hub: https://hub.docker.com/r/louislam/uptime-kuma
更多推荐



所有评论(0)