1. Uptime Kuma 项目概述
Uptime Kuma 是一款开源的现代化监控工具,专为网站、API 和各种网络服务设计。相比传统的监控方案,它提供了更直观的仪表盘、更灵活的告警机制和更轻量级的部署方式。我在实际运维工作中发现,很多团队还在使用老旧的监控系统,不仅配置复杂,而且告警延迟严重。Uptime Kuma 正好解决了这些痛点。
这个工具特别适合中小型团队和个人开发者使用,无需复杂的配置就能快速搭建起完整的监控体系。它支持 HTTP(s)、TCP、Ping、DNS 等多种监控协议,还能与 Telegram、Discord、Slack 等主流通讯工具集成,实现实时告警。我自己用了一年多,监控着二十多个生产环境服务,稳定性相当不错。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 部署环境准备
2.1 硬件与系统要求
Uptime Kuma 对硬件要求极低,我在树莓派4(4GB内存)上都能流畅运行。官方推荐的最小配置是:
- 1核CPU
- 512MB内存
- 1GB存储空间
支持的操作系统包括:
- Linux(推荐 Ubuntu 20.04+)
- Windows Server 2016+
- macOS(开发测试用)
注意:生产环境强烈建议使用 Linux 系统,Windows 下可能会遇到路径权限问题。
2.2 依赖安装
Uptime Kuma 需要 Node.js 环境,我推荐使用 nvm 管理 Node 版本:
bash复制# 安装 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
# 加载 nvm
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
# 安装 Node.js LTS 版本
nvm install --lts
数据库方面,Uptime Kuma 默认使用 SQLite,也支持 MySQL/PostgreSQL。对于轻量级部署,SQLite 完全够用。如果需要更高性能:
bash复制# MySQL 安装(Ubuntu)
sudo apt update
sudo apt install mysql-server
sudo mysql_secure_installation
3. 安装部署详解
3.1 Docker 部署方案
这是最推荐的部署方式,我在生产环境用了大半年,升级维护特别方便:
bash复制# 创建数据卷
docker volume create uptime-kuma-data
# 运行容器
docker run -d \
--restart=always \
-p 3001:3001 \
-v uptime-kuma-data:/app/data \
--name uptime-kuma \
louislam/uptime-kuma:1
关键参数说明:
--restart=always:确保服务崩溃后自动重启-v挂载卷:保证数据持久化- 3001 端口:可按需修改,但要同步调整防火墙
3.2 手动安装方案
适合需要深度定制的场景:
bash复制# 克隆仓库
git clone https://github.com/louislam/uptime-kuma.git
cd uptime-kuma
# 安装依赖
npm install --production
# 启动服务
npm run start
手动安装后,建议配置 PM2 守护进程:
bash复制npm install pm2 -g
pm2 start npm --name "uptime-kuma" -- run start
pm2 save
pm2 startup
4. 运维配置实战
4.1 监控项设置
在仪表盘点击"Add New Monitor",常见配置示例:
-
HTTP 网站监控:
- Monitor Type: HTTP(s)
- URL: https://example.com
- Interval: 60秒
- Request Timeout: 30秒
-
API 健康检查:
- Monitor Type: HTTP(s)
- URL: https://api.example.com/health
- Expected Status Code: 200-299
- Authentication: Basic Auth
-
数据库连通性:
- Monitor Type: TCP
- Hostname: db.example.com
- Port: 3306
经验:对于关键服务,建议将检测间隔设为30秒,非核心服务可以设为2-5分钟。
4.2 告警配置技巧
Uptime Kuma 支持多种告警方式,这里以 Telegram 为例:
-
创建 Telegram Bot:
- 私聊 @BotFather
- 发送 /newbot 按提示操作
- 获取 API Token
-
在 Uptime Kuma 添加通知:
- Notification Type: Telegram
- 填入 Bot Token
- 获取 Chat ID:向 @userinfobot 发送任意消息
-
高级告警规则示例:
yaml复制# 当连续3次检测失败时触发告警 trigger: 3 # 每隔10分钟重复告警 reminder: 10 # 只在工作时间告警(9:00-18:00) timezone: Asia/Shanghai day: 1,2,3,4,5 time: 9:00-18:00
5. 高级运维技巧
5.1 数据备份方案
Uptime Kuma 的所有数据都存储在 /app/data 目录(Docker部署)。我采用的备份策略:
-
每日增量备份:
bash复制# 创建备份脚本 /usr/local/bin/backup-uptime-kuma.sh #!/bin/bash BACKUP_DIR=/backups/uptime-kuma TIMESTAMP=$(date +%Y%m%d_%H%M%S) docker exec uptime-kuma sqlite3 /app/data/kuma.db ".backup '$BACKUP_DIR/kuma_$TIMESTAMP.db'" find $BACKUP_DIR -name "*.db" -mtime +7 -delete -
设置 cron 定时任务:
bash复制chmod +x /usr/local/bin/backup-uptime-kuma.sh crontab -e # 每天凌晨3点执行备份 0 3 * * * /usr/local/bin/backup-uptime-kuma.sh
5.2 性能优化方案
当监控目标超过50个时,建议进行以下优化:
-
数据库调优(MySQL示例):
sql复制ALTER TABLE `monitor` ADD INDEX `status_index` (`active`, `status`); ALTER TABLE `heartbeat` ADD INDEX `monitor_time_index` (`monitor_id`, `time`); -
调整 Node.js 参数:
bash复制# 修改启动命令 NODE_ENV=production node --max-old-space-size=512 server.js -
负载均衡配置(Nginx示例):
nginx复制upstream uptime-kuma { server 127.0.0.1:3001; keepalive 32; } server { listen 80; server_name status.yourdomain.com; location / { proxy_pass http://uptime-kuma; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }
6. 故障排查指南
6.1 常见问题速查表
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 仪表盘无法访问 | 端口冲突/防火墙 | netstat -tulnp 检查端口占用 |
| 监控数据不更新 | 时区配置错误 | 检查服务器时区 timedatectl |
| Telegram告警失败 | Chat ID 错误 | 重新向 @userinfobot 获取ID |
| 高CPU占用 | 监控间隔太短 | 调整关键监控间隔至≥30秒 |
| 数据库损坏 | 异常关机导致 | 从备份恢复或执行 PRAGMA integrity_check |
6.2 日志分析技巧
Uptime Kuma 的日志位于:
- Docker:
docker logs uptime-kuma - 手动安装:
pm2 logs uptime-kuma
关键日志解读:
Monitor #1: Success:正常检测Socket.io connection failed:前端连接问题ECONNREFUSED:目标服务不可达CERT_HAS_EXPIRED:SSL证书过期
对于复杂问题,可以启用调试模式:
bash复制DEBUG=* npm run start
7. 版本升级策略
Uptime Kuma 活跃更新,建议每季度升级一次。我的升级流程:
-
查看最新版本:
bash复制
docker pull louislam/uptime-kuma:latest -
执行升级:
bash复制docker stop uptime-kuma docker rm uptime-kuma docker run -d \ --restart=always \ -p 3001:3001 \ -v uptime-kuma-data:/app/data \ --name uptime-kuma \ louislam/uptime-kuma:1 -
验证升级:
bash复制docker logs uptime-kuma | grep "Version"
重要:升级前务必备份数据库,大版本升级可能会有数据结构变更
